Научите ове уредне ЈаваСцрипт трикове за мање од 5 минута

Технике уштеде времена које користе професионалци

1. Брисање или скраћивање низа

Једноставан начин брисања или скраћивања низа без поновног додељивања је променом његове lengthвредности својства:

const arr = [11, 22, 33, 44, 55, 66];
// truncantingarr.length = 3;console.log(arr); //=> [11, 22, 33]
// clearingarr.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; // ...}

Ово је стари, али ефикасан образац, који покушава да симулира именоване параметре у ЈаваСцрипт-у. Позивање функције изгледа у реду. С друге стране, логика руковања објектима конфигурације је непотребно опширна. Уз ЕС2015 деструктурирање објеката, можете заобићи ову ману:

function doSomething({ foo = 'Hi', bar = 'Yo!', baz = 13 }) { // ...}

А ако је потребно да конфигурациони објекат учините опционим, то је такође врло једноставно:

function doSomething({ foo = 'Hi', bar = 'Yo!', baz = 13 } = {}) { // ...}

3. Деструктурирање објеката за ставке низа

Доделите ставке низа појединачним променљивим са деструктурирањем објеката:

const csvFileLine = '1997,John Doe,US,[email protected],New York';
const { 2: country, 4: state } = csvFileLine.split(',');

4. Пребаците са опсезима

НАПОМЕНА: Након мало размишљања, одлучио сам да разликујем овај трик од осталих у овом чланку. Ово НИЈЕ техника која штеди време, НИТИ је погодна за стварни животни код. Имајте на уму: „Ако“ су увек бољи у таквим ситуацијама.

За разлику од осталих савета у овом посту, то је више радозналост него нешто што заиста треба користити.

Свеједно, задржаћу га у овом чланку из историјских разлога.

Ево једноставног трика за употребу опсега у наредбама прекидача:

function getWaterState(tempInCelsius) { let state; switch (true) { case (tempInCelsius  0 && tempInCelsius < 100): state = 'Liquid'; break; default: state = 'Gas'; }
 return state;}

5. Чекајте више функција асинхронизације са асинц / аваит

Могуће је awaitумножити више функција асинхронизације да бисте завршили помоћу Promise.all:

await Promise.all([anAsyncCall(), thisIsAlsoAsync(), oneMore()])

6. Стварање чистих предмета

Можете створити 100% чист објекат, који неће наследити ниједно својство или метод Object(на пример constructor, toString()и тако даље).

const pureObject = Object.create(null);
console.log(pureObject); //=> {}console.log(pureObject.constructor); //=> undefinedconsole.log(pureObject.toString); //=> undefinedconsole.log(pureObject.hasOwnProperty); //=> undefined

7. Форматирање ЈСОН кода

JSON.stringifyможе учинити више од једноставног стрингификовања објекта. Такође можете да улепшате свој ЈСОН излаз:

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. Уклањање дуплираних предмета из низа

Коришћењем ЕС2015 скупова заједно са оператором Спреад можете лако уклонити дупликате ставки из низа:

const removeDuplicateItems = arr => [...new Set(arr)];
removeDuplicateItems([42, 'foo', 42, 'foo', true, true]);//=> [42, "foo", true]

9. Сравнавање вишедимензионалних низова

Сравњивање низова је тривијално са оператором Спреад:

const arr = [11, [22, 33], [44, 55], 66];
const flatArr = [].concat(...arr); //=> [11, 22, 33, 44, 55, 66]

Нажалост, горњи трик ће радити само са дводимензионалним низовима. Али са рекурзивним позивима можемо га учинити погодним за низове са више од 2 димензије:

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]

Ето ти га! Надам се да ће вам ови мали трикови помоћи да напишете бољи и лепши ЈаваСцрипт.