dr.Brain

doctor Brain

мир глазами веб-разработчика

8 интересных трюков

трюки с JavaScript

dr.Brain

время чтения 3 мин.

Photo by Karol Kasanicky on Unsplash

Вне всякого сомнения, JavaScript остается одним из самых интересных и популярных языков программирования. За долгое время в сообществе JavaScript-разработчиков было придумано множество трюков, позволяющих манипулировать данными совершенно нестандартными способами. В этой статье мы разберем 8 таких приемов.

Содержание


Функциональное наследование

С помощью функционального наследования в JavaScript можно создать потомки объектов и расширить их возможности новыми методами:

// Базовая функция
function Drinks(data) {
    var that = {}; // Создаем пустой объект
    that.name = data.name; // Добавляем свойство "name"
    return that; // Возвращаем объект
};

// Функция, которая наследуется от базовой функции
function Coffee(data) {
    // создаем объект "Drinks"
    var that = Drinks(data);
    // Расширяем базовый объект, добавляем функцию "giveName"
    that.giveName = function() {
    return 'This is ' + that.name;
    };
    return that;
};

// Пример
var firstCoffee = Coffee({ name: 'Cappuccino' });
console.log(firstCoffee.giveName());
// Результат: "This is Cappuccino"

Сопоставление массивов без .map()

.map() - довольно сложный метод, который можно использовать, в том числе, и для сопоставления массивов. Альтернативой является метод .from():

let dogs = [
    { name: 'Rio', age: 2 },
    { name: 'Mac', age: 3 },
    { name: 'Bruno', age: 5 },
    { name: 'Jucas', age: 10 },
    { name: 'Furr', age: 8 },
    { name: 'Blu', age: 7 },
]

let dogsNames = Array.from(dogs, ({name}) => name);
console.log(dogsNames);
// Результат [“Rio”, “Mac”, “Bruno”, “Jucas”, “Furr”, “Blu”]

Преобразуем число в строку и строку в число

Обычно, преобразование числа в строку выглядит так:

let num = 4
let newNum = num.toString();

А строки в число, так:

let num = "4"
let stringNumber = Number(num);

Но есть и более интересные варианты:

let num = 15;
let numString = num + ""; // число в строку
let stringNum = +s; // строка в число

Изменяем длину массива или удаляем его

В JavaScript мы можем передать аргумент методу length() и изменить длину массива:

let array_values = [1, 2, 3, 4, 5, 6, 7, 8];  
console.log(array_values.length); 
// 8

array_values.length = 5;  
console.log(array_values.length); 
// 5 

console.log(array_values); 
// [1, 2, 3, 4, 5]

или вовсе удалить его:

let array_values = [1, 2, 3, 4, 5, 6, 7,8]; 
console.log(array_values.length); 
// 8

array_values.length = 0;   
console.log(array_values.length); 
// 0

console.log(array_values); 
// []

Меняем значения переменных с помощью деструктуризации

Деструктуризация в JavaScript нужна для извлечения значений элементов массива в переменные, но ее можно использовать для быстрой смены местами значений переменных:

let a = 1, b = 2;
[a, b] = [b, a];
console.log(a); // result -> 2
console.log(b); // result -> 1

Удаляем дубли из массива

Итак, у нас есть массив, содержащий элементы различных типов, некторые значения повторяются. Избавиться от дублей в таком массиве проще, чем кажется:

onst array = [1, 3, 2, 3, 2, 1, true, false, true, 'Kio', 2, 3];
const filteredArray = [...new Set(array)];
console.log(filteredArray) // [1, 3, 2, true, false, "Kio"]

Упрощаем цикл for

Создавая цикл в JavaScript, можно писать намного меньше кода:

const names = ["Kio", "Rio", "Mac"];

// Длинный вариант
for (let i = 0; i < names.length; i++) {
  const name = names[i];
  console.log(name);
}

// Короткий вариант
for (let name of names) console.log(name);

Узнаем время выполнения скрипта

В JavaScript довольно просто узнать, сколько времени уходит на выполнение фрагмента кода:

const firstTime = performance.now();
// Какой-то код
const secondTime = performance.now();

console.log(`The something function took ${secondTime - firstTime} milliseconds.`);

Спасибо за внимание.


Написано по материалам статьи Garvit Motwani “8 JavaScript Tips & Tricks That No One Teaches”.

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.