見出し画像

ES2023で追加されたJavaScriptの新機能まとめ

ES2023 で追加された JavaScript の新機能のまとめです。

Array find from last

Array と TypedArray に findLast() とfindLastIndex() が追加されました。

実装後

const array = [1, 2, 3, 4]

// 配列の後ろから数えて最初の奇数の値
array.findLast(n => n % 2 === 1)       // 3
// 配列の後ろから数えて最初の奇数の値の番目
array.findLastIndex(n => n % 2 === 1)  // 2

実装前

const array = [1, 2, 3, 4]

// 配列の後ろから数えて最初の奇数の値
[...array].reverse().find(n => n % 2 === 1)                          // 3
// 配列の後ろから数えて最初の奇数の値の番目
array.length - 1 - [...array].reverse().findIndex(n => n % 2 === 1)  // 2

これで後ろからの検索を簡単に行えるようになります。

Hashbang Grammar

Hashbang (shebang) とはファイルの先頭にあるコメント文字列のことで、Unix 環境で JavaScript が実行されるときに Hashbang が取り除かれてソースが生成されてからエンジンに渡されます。

#!/usr/bin/env node

console.log('Hello World')

シェルスクリプトと Node.js 環境ではこの文法が実装されていましたが、JavaScript 環境では標準化されていませんでした。先頭の #! 構文のみコメントとして扱われます。

Symbols as WeakMap keys

Symbol は一意の値であることが保証されており、WeakMap のキーでも使えるようになりました。

const weak = new WeakMap()
const key = Symbol('ref')

weak.set(key, 'ES2023')
weak.get(key)  // ES2023

Change Array by Copy

reverse() と sort()splice() は元の配列を変更する破壊的メソッドです。そのため、[…array] のように配列をコピーしてから使う必要がありましたが、toReversed() と toSorted()toSpliced() という元の配列を変更せずにコピーを返す関数が追加されました。

const array = [1, 3, 2, 4]
const reversed = array.toReversed()
const sorted = array.toSorted()
const spliced = array.toSpliced(2, 0, 5)
const withed = array.with(1, 2)

console.log(array)     // [1, 3, 2, 4]
console.log(reversed)  // [4, 2, 3, 1]
console.log(sorted)    // [1, 2, 3, 4]
console.log(spliced)   // [1, 3, 5, 2, 4]
console.log(withed)    // [1, 2, 2, 4]

また、配列の値を置換する with() も追加されています。

この記事が気に入ったらサポートをしてみませんか?