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 =>[...newSet(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