Это продолжение моей предыдущей статьи: 4 совета JavaScript для более короткого кода
1. Замените Switch и If-Else парами ключ-значение
Оператор switch
и оператор if-else
оценивают выражение и выполняют выражения условно. Но по мере увеличения числа случаев растет и код.
//using switch function returnDaySwitch(val) { switch (val) { case 1: return "It's monday" case 2: return "It's tuesday" case 3: return "It's wednesday" case 4: return "It's thursday" case 5: return "It's friday" case 6: return "It's saturday" case 7: return "It's sunday" default: return 'Enter a value between 1 - 7' } } //using if-else function returnDayIfElse(val) { if (val == 1) { return "It's monday" } else if (val == 2) { return "It's tuesday" } else if (val == 3) { return "It's wednesday" } else if (val == 4) { return "It's thursday" } else if (val == 5) { return "It's friday" } else if (val == 6) { return "It's saturday" } else if (val == 7) { return "It's sunday" } else { return 'Enter a value between 1 - 7' } } const day = 3 console.log(returnDaySwitch(day)) //It's wednesday console.log(returnDayIfElse(day)) //It's wednesday
Это можно упростить, используя пары ключ-значение объекта.
function returnDayKeyValue(val) { const returnDayObject = { 1: "It's monday", 2: "It's tuesday", 3: "It's wednesday", 4: "It's thursday", 5: "It's friday", 6: "It's saturday", 7: "It's sunday", } if(!returnDayObject[val]){ return "Enter a value between 1 - 7"; } return returnDayObject[val] } cosnt day = 3; console.log(returnDayKeyValue(day)); //It's wednesday
Julian BRUXELLE Поделился способом обхода if-else внутри функции
const returnDayKeyValue = (val) => { const returnDayObject = { 1: "It's monday", 2: "It's tuesday", 3: "It's wednesday", 4: "It's thursday", 5: "It's friday", 6: "It's saturday", 7: "It's sunday", } returnDayObject[val] ?? "Enter a value between 1 - 7"; }
Это можно сделать даже короче.
const dayToString = day =>
({
1: "It's Monday",
2: "It's Tuesday",
3: "It's Wednesday",
4: "It's Thursday",
5: "It's Friday",
6: "It's Saturday",
7: "It's Sunday",
}[day] ?? "Enter a value between 1 - 7");
Or
const dayToString = day =>
[
undefined,
"It's Monday",
"It's Tuesday",
"It's Wednesday",
"It's Thursday",
"It's Friday",
"It's Satuday",
"It's Sumday",
][day] ?? "Enter a value between 1 - 7";
2. Удалите повторяющиеся элементы в массиве
Дублирующиеся элементы в массиве можно удалить с помощью Конструктора набора и синтаксиса расширения. Конструктор набора преобразует массив в набор, в котором не может быть повторяющихся элементов. Синтаксис распространения можно использовать для преобразования объекта набора обратно в массив.
const array = [1,2,2,3,4,5] const uniq = [...new Set(array)]; console.log(uniq) // [1,2,3,4,5]
3. Имена вычисляемых свойств
Вы не можете установить ключи объекта как переменные напрямую. Он будет читать имена переменных как имена ключей.
const key1 = "name"; const key2 = "age"; const student = { key1:"john Doe", key2:26 } console.log(student) //{ key1:"john Doe", key2:26 }
Начиная с ECMAScript 2015, в квадратных скобках []
можно поместить выражение, которое будет вычислено и использовано в качестве имени свойства.
const key1 = "name"; const key2 = "age"; const student = { [key1]:"john Doe", [key2]:26 } console.log(student) //{ name:"john Doe", age:26 }
4. Не допускайте, чтобы ложное значение оценивалось как ложное
В JavaScript существует шесть ложных значений: undefined
, null
, NaN
, 0
, ""
(пустая строка) и false
. Ложное значение — это то, что оценивается как ЛОЖЬ, например, при проверке переменной. Могут быть сценарии, в которых вы не хотите, чтобы ложное значение оценивалось как ложное.
const number = 5; if(number){ console.log('The number exists') }else{ console.log('The number do not exist') }
Напечатает The number exists
. Но
const number = 0; if(number){ console.log('The number exists') }else{ console.log('The number do not exist') }
Напечатает The number do not exists
. Это можно решить, выдав исключение при оценке
const number = 0; if(number===0?true:number){ console.log('The number exists') }else{ console.log('The number do not exist') }
Напечатает The number exists
. 0
в выражении можно заменить любым ложным значением.