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() も追加されています。
この記事が気に入ったらサポートをしてみませんか?