Пять способов написать более производительный код в js.
Автор: admin
Дата: 13.09.2020 07:20
Быстрое возведение в степень
Начиная с ES7, стало возможным использовать оператор возведения в степень **
как сокращение для Math.pow
, что быстрее, чем писать
Math.pow(2, 3).
console.log (2 ** 3); // Результат: 8
Его не следует путать с символом ^, который обычно используется для представления показателей, но который в JavaScript является побитовым оператором XOR. До ES7 сокращение существовало только для степеней с основанием 2, используя оператор побитового сдвига влево <<
:
// Следующие выражения эквивалентны:
Math.pow(2, n);
2 << (n - 1);
2 ** n;
2 << 3 = 16
эквивалентно 2 ** 4 = 16
.
Преобразование к целому числу
Если вы хотите преобразовать число с плавающей запятой в целое число, вы можете использовать Math.floor()
, Math.ceil()
или Math.round()
. Но есть также более быстрый способ усечь число с плавающей запятой до целого числа с помощью оператора поразрядного ИЛИ |.
console.log(23.9 | 0); // Результат: 23
console.log(-23,9 | 0); // Результат: -23
Поведение |
варьируется в зависимости от того, имеете ли вы дело с положительными или отрицательными числами, поэтому лучше его использовать, только если вы уверены в том, что делаете.
Если n положительно, n | 0
округляется в меньшую сторону. Если n отрицательно, эта операция удаляет все, что идет после десятичной точки, усекая число с плавающей запятой до целого числа.
Удалить последние цифры
Оператор побитового ИЛИ также можно использовать для удаления любого количества цифр из конца целого числа. Это означает, что нам не нужно использовать такой код для преобразования между типами:
let str = "1553";
Number(str.substring(0, str.length - 1));
Вместо этого побитовый оператор ИЛИ позволяет нам писать:
console.log (1553/10 | 0) // Результат: 155
console.log (1553/100 | 0) // Результат: 15
console.log (1553/1000 | 0) // Результат: 1
Усечение массива
Если вы хотите деструктивно удалить значения из конца массива, есть более быстрые альтернативы, чем использование
splice()
Например, если вы знаете размер исходного массива, вы можете переопределить его свойство длины, например:
let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.length = 4;
console.log(arr); // Результат: [0, 1, 2, 3]
Это особенно лаконичное решение. Однако я обнаружил, что время выполнения метода slice()
стало еще быстрее. Если ваша главная цель - скорость, подумайте об использовании чего-то вроде этого:
let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
arr = arr.slice(0, 4);
console.log(arr); // Результат: [0, 1, 2, 3]
Получить последний элемент(ы) в массиве
Метод массива slice ()
может принимать отрицательные целые числа, и в этом случае он будет извлекать значения из конца массива, а не из начала.
let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log (arr.slice (-1)); // Результат: [9]
console.log (arr.slice (-2)); // Результат: [8, 9]
console.log (arr.slice (-3)); // Результат: [7, 8, 9]
Форматирование кода JSON
Наконец, вы, возможно, использовали
JSON.stringify
раньше, но понимаете ли вы, что он также может помочь вам сделать отступ в JSON?
Метод stringify()
принимает два необязательных параметра: функцию replacer, которую можно использовать для фильтрации отображаемого JSON, и значение пробела.
Значение пробела принимает целое число для количества пробелов, которое вы хотите, или строку (например, '\t' для вставки табуляции), и это может значительно упростить чтение полученных данных JSON.
console.log(JSON.stringify({ alpha: 'A', beta: 'B' }, null, '\t'));
// Result:
// '{
// "alpha": A,
// "beta": B
// }'