DEV Community

Andrew
Andrew

Posted on • Edited on

Що нового в ES2023? 🤔

1. Знайти масив з останнього

Ця функція дозволить нам знайти елемент від останнього до першого в масиві на основі умови.

const array = [{a: 1, b: 1}, {a: 2, b: 2}, {a: 3, b: 3}, {a: 4, b: 4}]

console.log(array.findLast(n => n)); // result -> {a: 4, b: 4 }
console.log(array.findLast(n => n.a * 5 === 20)); // result -> {a:4, b:4} as the condition is true so it returns the last element
console.log(array.findLast(n => n.a * 5 === 21)); // result -> undefined as the condition is false so return undefined instead of {a:4, b:4}
console.log(array.findLastIndex(n => n.a * 5 === 21)); // result -> -1 as the condition is not justified for returning the last element
console.log(array.findLastIndex(n => n.a * 5 === 20)); // result -> 3 which is the index of the last element as the condition is true
Enter fullscreen mode Exit fullscreen mode

2. Hashbang Grammer

Ця функція дозволить нам використовувати Hashbang / Shebang у деяких CLI.
Shebang представлено #! і є спеціальним рядком на початку сценарію, який повідомляє операційній системі, який інтерпретатор використовувати під час виконання сценарію.

#!/usr/bin/env node
// in the Script Goal
'use strict';
console.log(2*3);

#!/usr/bin/env node
// in the Module Goal
export {};
console.log(2*2);
Enter fullscreen mode Exit fullscreen mode

#!/usr/bin/env node цей рядок безпосередньо викликатиме вихідний файл Node.js як власний виконуваний файл.

Нам не знадобиться цей рядок (#!/usr/bin/env node) для явного виклику файлу через інтерпретатор вузла, наприклад, node ./file.

3. Символи як ключі WeakMap

Це дозволяє використовувати унікальні символи як ключі. Наразі WeakMaps обмежено дозволом лише об’єктів як ключів. Об’єкти використовуються як ключі для WeakMaps, оскільки вони мають однаковий аспект ідентичності.

Symbol — це єдиний примітивний тип у ECMAScript, який дозволяє використовувати для нього унікальні значення, використовуючи Symbol як ключ замість створення нового об’єкта за допомогою WeakMap.

const weak = new WeakMap();

const key = Symbol('my ref');
const someObject = { a: 1 };

weak.set(key, someObject);
console.log(weak.get(key));
Enter fullscreen mode Exit fullscreen mode

Більше випадків використання, пов’язаних із ShadowRealms і Record & Tuples із використанням Symbols як WeakMaps.

4. Змінити масив шляхом копіювання

Це надає додаткові методи для Array.prototype внесення змін до масиву шляхом повернення його нової копії зі зміною замість оновлення вихідного масиву.

Нові Array.prototype введені функції:

  1. Array.prototype.toReversed()
  2. Array.prototype.toSorted(compareFn)
  3. Array.prototype.toSpliced(start, deleteCount, ...items)
  4. Array.prototype.with(index, value)
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]

/* toReversed */

const reversed = numbers.toReversed();
console.log("reversed", reversed); // "reversed", [9, 8, 7, 6, 5, 4, 3, 2, 1]
console.log("original", numbers); // "original", [1, 2, 3, 4, 5, 6, 7, 8, 9]

/* toSorted  */
const sortedArr = numbers.toSorted();
console.log("sorted", sortedArr); // "sorted", [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log("original", numbers); // "original", [1, 2, 3, 4, 5, 6, 7, 8, 9]

/* with */
const replaceWith = numbers.with(1, 100);
console.log("with", replaceWith); // "with", [1, 100, 3, 4, 5, 6, 7, 8, 9]
console.log("original", numbers); // "original", [1, 2, 3, 4, 5, 6, 7, 8, 9]

/* toSpliced */
const splicedArr = numbers.toSpliced(0, 4);
console.log("toSpliced", splicedArr); // "toSpliced", [5, 6, 7, 8, 9]
console.log("original", numbers); // "original", [1, 2, 3, 4, 5, 6, 7, 8, 9]
Enter fullscreen mode Exit fullscreen mode

Це набір функцій, які з’явилися в ES2023.

Top comments (0)