Ecmascript (ES) – это спецификация, на которой основана JavaScript. Этот язык постоянно развивается и получает обновления каждый год. Полезно удерживаться, чтобы избежать отмагивания синтаксисом и оставаться продуктивным в любой базе JavaScript.
ES2019 доступен в последней версии Chrome, Firefox, Safari и Node. Он также доступен на более старых платформах через компиляцию с Babel или Teadercript. Не забудьте всегда проверять Могу ли я использовать Сайт, чтобы убедиться, что новая функция, которую вы хотите использовать, доступна на ваших целевых платформах.
- Array.flat ()
- Array.flatmap ()
- String.trimstart ()
- String.trimend ()
- Объект.Fromentries.
- Дополнительный переплет
- Symbol.prototype.description.
- Функция. Прототип.
- Улучшения JSON
Array.flat ()
квартира ()
Метод возвращает Новый массив льстит все элементы субарадирования рекурсивно до заданной глубины.
const a1 = [1, 2, [3, 4], 5]; console.log(a1.flat()); // OUTPUT: [1, 2, 3, 4, 5]
По умолчанию он только квартиры один уровень квартира (1)
, но вы можете конвертировать любой Массив
Многомерный до одномерного использования Бесконечность
Отказ
const a2 = [1, 2, [[3, [4, 5]], 6], 7]; console.log(a2.flat(Infinity)); // OUTPUT: [1, 2, 3, 4, 5, 6, 7]
И, если у вас есть пустой элемент как часть вас Массив
это будет удалено в новом Множество
const a3 = [1, 2, , 5]; console.log(a3.flat()); // OUTPUT: [1, 2, 5]
Array.flatmap ()
Возвращает Новый массив объединение квартира ()
и карта ()
методы. Помните: ES6 карта ()
Метод Массив
Возвращает новый Массив
Применение функции к каждому из его элементов.
Предположим, мы хотим удвоить каждый элемент массива и поместить результат после каждого из этих элементов:
const b1 = [2, 8, 32]; const b2 = b1.map(el => { return [el, el * 2]; }); console.log(b2); // OUTPUT: [[2, 4], [8, 16], [32, 64]] const b3 = b2.flat(); console.log(b3); // OUTPUT: [2, 4, 8, 16, 32, 64]
Использование FlatMap ()
const b4 = [2, 8, 32]; const b5 = b4.flatMap(el => { return [el, el * 2]; }); console.log(b5); // OUTPUT: [2, 4, 8, 16, 32, 64]
String.trimstart () и string.trimend ()
String.trim ()
Удаляет пробелы с самого начала и конца Строка
Итак, используя String.trimstart ()
Удалю пробелы только от начала строки во время использования String.trimend ()
будет делать, но с пробелами с конца.
const c1 = ' Start here. '; const c2 = c1.trimStart(); console.log(c2); // OUTPUT: 'Start here. ' (with the spaces at the end)
const c3 = ' End here. '; const c4 = c3.trimEnd(); console.log(c4); // OUTPUT: ' End here.' (with the spaces at the beggining)
Объект.
Этот метод принимает только ИТЕРИТЕЛЬНО
как аргумент, и это создает Объект
из списка пар клавиш E.g. производится Object.entries ()
(ES2017), который используется для преобразования Объект
к Массив
[ключевых, значение] пар.
Предположим, мы хотим удвоить каждое значение свойств объекта:
const d1 = { prop1: 2, prop2: 8, prop3: 32 }; const d2 = Object.entries(d1); console.log(d2); // OUTPUT: [["prop1", 2], ["prop2", 8], ["prop3", 32]]
С карта ()
Мы можем повторить каждый элемент и применить функцию, чтобы удвоить каждое значение:
const d3 = d2.map(([key, value]) => [key, value * 2]); console.log(d3); // OUTPUT: [["prop1", 4], ["prop2", 16], ["prop3", 64]]
Теперь, используя PreyentRies ()
Метод мы будем генерировать Объект
С значениями изменены.
const d4 = Object.fromEntries(d3); console.log(d4); /* OUTPUT: { prop1: 4, prop2: 16, prop3: 64, } */
Дополнительный переплет
Это позволяет использовать поймать ()
пункт без необходимости указывать параметр (исключение).
try { // execute code } catch { // handle error }
Нет необходимости добавлять параметр на поймать ()
(по желанию)
try { // execute code } catch (err) { // handle error }
Symbol.prototype.description.
Это позволяет предоставить описание при создании Символ
через функцию завода Символ ()
и доступ к нему через свойство описания.
const e1 = Symbol('Optional description'); console.log(e1.description); // OUTPUT: 'Optional description'
Функция. Прототип.
Он возвращает функцию точно так, как это было определено, включая уныние пространства и комментарии.
Предыдущий ES10
const fn = function /* initial test */ test() {}; fn.toString(); // OUTPUT: 'function test() {}'
Теперь это будет:
const fn = function /* initial test */ test() {}; fn.toString(); // OUTPUT: 'function /* initial test */ test() {}'
Улучшения JSON
Разделитель линии \ u2028
и разделитель абзаца \ U2029
Символы теперь правильно проанализируют вместо синтаксиса при использовании использования Json.carnse ()
Хорошо сформированные json.stringify
Предотвратите json.stringify от возвращения неконформированных строк (в частности, суррогатные кодовые точки u + d800 через u + dfff).