Според мен задължително знание

В тази статия компилирам някои от „техниките“ на JavaScript, които обикновено използвам в ежедневието си, спестявайки много време. Надявам се да ги намерите за полезни!

1. Създайте генерична функция

Нека си представим, че искаме да разработим обща функция, дадени някои параметри и функция. След това тази функция се изпълнява с тези параметри.
Например, калкулатор с N параметъра и N операции. Можете лесно да постигнете това с помощта на оператора за разпространение и функцията за намаляване:

function calculator(operation, ...numbers) {
    return operation(...numbers);
}
function add(...numbers) {
    return numbers.reduce( (total, num) => total + num, 0);
}
function subtract(...numbers) {
    return numbers.reduce( (total, num) => total - num, 0);
}
function multiply(...numbers) {
    return numbers.reduce( (total, num) => total * num, 1);
}
console.log(calculator(add, 1, 2, 3, 4, 5));
console.log(calculator(subtract, 10, 2, 1));
console.log(calculator(multiply, 2, 2, 2, 2));

2. Превключване с диапазони

Понякога вероятно бихте намерили за полезно да използвате диапазони в изречение Switch. Ето пример как да го направите:

function chooseSportByTemperature(fahrenheit) { 
  let sport;
  switch (true) {
   
   case (fahrenheit >= 15 && fahrenheit <=20):
     sport = 'Running';
     break;
   case (fahrenheit > 20 && fahrenheit <= 30):
    sport = 'Cycling';
    break;
   case (fahrenheit > 30):
    sport = 'Stay in home';
    break;
   default:
    sport = 'Sex';
   
   }
return sport;
}

3. Групиране на множество случаи на превключване

Изчистен начин за групиране на падежни изречения:

function setMyValueByValue(value) { 
    let myValue;
  switch (value)
  {
     case "value1":
     case "value2":
     case "value3": 
         myValue = "My value 1-2-3"
         break;
     case "value4":     
         myValue = "My value 4"
         break;
     default: 
         myValue = "Default value"
  }
 return myValue;
}
console.log(setMyValueByValue("value1"));
console.log(setMyValueByValue("value2"));
console.log(setMyValueByValue("value3"));
console.log(setMyValueByValue("value4"));
console.log(setMyValueByValue("value5"));

4. Изчакайте до множество асинхронни функции с async/await

Възможно е да изчакате завършването на множество асинхронни функции, като използвате (Promise.all) вътре в асинхронната функция.

function resolveAfter1Seconds() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('resolved');
    }, 1000);
  });
}
function resolveAfter2Seconds() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('resolved');
    }, 2000);
  });
}
function resolveAfter3Seconds() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('resolved');
    }, 3000);
  });
}
function resolveAfter4Seconds() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('resolved');
    }, 4000);
  });
}
async function asyncFunction() {
  console.log('start');
  const result = await Promise.all(
  
  [resolveAfter1Seconds(),
   resolveAfter2Seconds(),
   resolveAfter3Seconds(),
   resolveAfter4Seconds()])
  console.log(result); //resolved after 4 seconds !
  console.log('end');
}
asyncFunction();

5. Изравняване на двумерни масиви в една стъпка

const multidimensionalArray = [1,2, [3, 4], [5, 6], 7, [8] ];
const flatArray = (original) => [].concat(...original);
const flattenedArray = flatArray(multidimensionalArray);

6. Изравняване на многомерни масиви в една стъпка

Използвайки метода flat(), можем да създадем нов масив с всички елементи на подмасив, свързани в него рекурсивно до определената дълбочина.

const multidimensionalArray = [0, 1, 2, [[[3, 4, 5]]]];
console.log(multidimensionalArray.flat());
console.log(multidimensionalArray.flat(3)); //depth 3.

7. Създавайте чисти обекти в JavaScript

Често е интересно да се създават чисти JavaScript обекти, които не наследяват никакви свойства на обекта. Постигането на това е толкова просто, колкото да направите следното:

const car = {type:"Ford", model:"250", color:"black"};
console.log(car);
console.log(car.constructor);
console.log(car.toString);
console.log(car.hasOwnProperty);

const  pureCar = Object.create(null);
console.log(pureCar);
console.log(pureCar.__proto__);
console.log(pureCar.constructor);
console.log(pureCar.toString);
console.log(pureCar.hasOwnProperty);

8. Премахнете дублиращите се елементи в масив в една стъпка

За да премахнете дублиращи се елементи в масив, можете да използвате деструктуриране и ES6 Set:

const removeDuplicatesFromArray = arr => [...new Set(arr)];
 
removeDuplicatesFromArray([1,1,2,3,4,4,4,true,true,'foo','foo']);

9. Показване в конзолата, когато дадена страница е започнала и приключила със зареждането

<script>
   window.onload=() =>{console.log('Start');}
   window.onunload=() =>{console.log('Finish');}
</script>
Or better:
<script>
   window.onload=() =>{console.time('pageLoadingTime');}
   window.onunload=() =>{console.timeEnd('pageLoadingTime');}
</script>

Можете също така да използвате функциите console.time(‘уникално име’) и console.timeEnd(‘уникално име’), които стартират и завършват таймер, за да проследите колко време отнема дадена операция.

10. Бутон за отпечатване на текущата страница

<input type="button" value="Print this page!" onclick="window.print()">

11. Закръгляване на числа

Можем да закръглим до най-близкото цяло число, да закръглим надолу или нагоре. JavaScript използва три метода, за да постигне това: Math

let myNumber= 1.56789;
myNumber = myNumber.toFixed(2);

Резултатът е низ, който трябва да бъде предаден на функцията parseFloat(), за да върне число. За съжаление, това е много бавно. Но ако имате нужда от точност, това е по-добрият начин.

Друг начин да направите това е да използвате Math.round за закръгляване до най-близкото цяло число:

let myNumber= 1.56789;
Math.round(myNumber);

Или Math.floor(), който закръгля надолу и Math.ceil() закръгля нагоре.

Имайте предвид, че закръгляването не е същото като отрязването:

let myNumber= 1.56789;
Math.trunc(myNumber);

Math.trunc() премахва всички дробни цифри.

12. Изпразване на масив

Толкова лесно, колкото присвояването на нулева стойност на неговото свойство за дължина:

let myArray = [1,2,3,4,5,6,7,8,9,10];
myArray.length = 0;

Заключение

Надявам се тази статия да ви е била полезна и приятна. Като комбинираме това, което езикът ни носи, често постигаме мощни и практични неща, като например създаване на общ калкулатор в няколко стъпки.

Още в: Още 12 нови супер полезни трика в JavaScript

Благодаря, че ме прочетохте! Пази се!