1. Очистить или обрезать массив
Мы можем очистить или обрезать массив, просто изменив длину массива:
-
const arr =
[11,
22,
33,
44,
55,
66];
// truncanting
-
arr.length =
3;
-
console.log(arr);
//=> [11, 22, 33]
// clearing
-
arr.length =
0;
-
console.log(arr);
//=> []
-
console.log(arr[2]);
//=> undefined
2. Используйте объекты деструктурирования для имитации именованных функций
Когда вам нужно передать набор переменных в качестве параметра функции, велика вероятность использования «объекта конфигурации», например:
-
doSomething({ foo:
'Hello', bar:
'Hey!', baz:
42
});
-
function doSomething(config)
{
-
const foo = config.foo !==
undefined
? config.foo :
'Hi';
-
const bar = config.bar !==
undefined
? config.bar :
'Yo!';
-
const baz = config.baz !==
undefined
? config.baz :
13;
// ...
}
При использовании функции doSomething{ foo: 'Hello', bar: 'Hey!', baz: 42 }
Этот Json передается в качестве параметра в Json, а затем разбирается в функциях, присваивающих значения переменным.
Это старый, но эффективный шаблон, который пытается эмулировать именованные параметры в JavaScript. Это хорошо, но делает код излишне подробным. Благодаря деструктуризации объектов ES2015 вы можете избежать многословия:
-
function doSomething({ foo =
'Hi', bar =
'Yo!', baz =
13
})
{
// ...
}
Если вам нужно сделать параметр в функции необязательным, это тоже просто:
-
function doSomething({ foo =
'Hi', bar =
'Yo!', baz =
13
}
=
{})
{
// ...
}
3. Структура параметров массива
Используйте «деструктурирование объекта», чтобы деконструировать строку, содержимое которой является массивом, а затем присвоить переменную:
-
const csvFileLine =
'1997,John Doe,US,john@doe.com,New York';
-
const
{
2: country,
4: state }
= csvFileLine.split(',');
Второй элемент «США» в массиве назначается стране, а четвертый элемент «Нью-Йорк» — штату.
4. Оператор switch с условием диапазона
Вот простые приемы использования областей видимости в операторах switch:
-
function getWaterState(tempInCelsius)
{
let state;
-
switch
(true)
{
-
case
(tempInCelsius <=
0):
-
state =
'Solid';
break;
-
case
(tempInCelsius >
0
&& tempInCelsius <
100):
-
state =
'Liquid';
break;
-
default:
-
state =
'Gas';
}
return state;
}
5. Механизм асинхронного обратного вызова для нескольких асинхронных функций
Вы можете использовать Promise.all для ожидания завершения нескольких асинхронных функций.
await Promise.all([anAsyncCall(), thisIsAlsoAsync(), oneMore()])
6. Создавайте чистые объекты
Вы можете создать 100% чистый объект, который не наследует никаких методов класса Object (например: конструктор, toString() и т.д.).
-
const pureObject =
Object.create(null);
-
console.log(pureObject);
//=> {}
-
console.log(pureObject.constructor);
//=> undefined
-
console.log(pureObject.toString);
//=> undefined
-
console.log(pureObject.hasOwnProperty);
//=> undefined
7. Код JSON становится форматированной строкой
JSON.stringify может делать больше, чем просто превращать объекты JSON в строки, вы также можете использовать его для украшения вашего вывода JSON:
-
const obj =
{
-
foo:
{ bar:
[11,
22,
33,
44], baz:
{ bing:
true, boom:
'Hello'
}
}
};
// The third parameter is the number of spaces used to
// beautify the JSON output.
-
JSON.stringify(obj,
null,
4);
// =>"{
// => "foo": {
// => "bar": [
// => 11,
// => 22,
// => 33,
// => 44
// => ],
// => "baz": {
// => "bing": true,
// => "boom": "Hello"
// => }
// => }
// =>}"
8. Удалить повторяющиеся элементы из массива
С ES2015, который включает в себя оператор Spread, он же последний JS, вы можете легко удалять повторяющиеся элементы из массива.
-
const removeDuplicateItems = arr =>
[...new
Set(arr)];
-
removeDuplicateItems([42,
'foo',
42,
'foo',
true,
true]);
//=> [42, "foo", true]
9. Уменьшить размерность многомерного массива
Уменьшить размерность двумерного массива с помощью оператора Spread очень просто:
-
const arr =
[11,
[22,
33],
[44,
55],
66];
-
const flatArr =
[].concat(...arr);
//=> [11, 22, 33, 44, 55, 66]
К сожалению, описанный выше трюк работает только для 2D-массивов. Но с помощью рекурсии мы можем уменьшить размерность массивов с более чем двумя измерениями:
-
function flattenArray(arr)
{
-
const flattened =
[].concat(...arr);
-
return flattened.some(item =>
Array.isArray(item))
?
-
flattenArray(flattened)
: flattened;
}
-
const arr =
[11,
[22,
33],
[44,
[55,
66,
[77,
[88]],
99]]];
-
const flatArr = flattenArray(arr);
//=> [11, 22, 33, 44, 55, 66, 77, 88, 99]
Выше приведены 9 советов, надеюсь, они помогут вам писать более качественный и красивый JS-код!
Станьте высокооплачиваемым фронтенд-инженером с нулевым фундаментом! Подпишитесь на Google и GitHub, чтобы изучить курс [Front-end Development] Силиконовой долины с нуля, бросьте вызов оригинальному проекту Силиконовой долины, получите сертификат Силиконовой долины, нажмите, чтобы испытать его бесплатно
веб-разработка переднего плана разработка переднего плана технологического обучения _ _ вход для обучения инженера переднего плана / продвинутый курс - отличия официального сайта Xuecheng (Udacity) | Udacity