👌
ES2024追加予定機能の中でよく使いそうなもの抜粋(私的)
Promise.withResolvers
Promise.withResolvers
は、Promiseをより柔軟に制御するための新しいメソッド。
Promise
のresolve
とreject
の関数を直接取得できるため、外部のスコープからPromise
を解決または拒否できる。
(非同期のテストとかで活躍しそう?)
const { promise, resolve, reject } = Promise.withResolvers();
// Promiseの結果に応じた処理を設定
promise.then(
(result) => {
console.log(`成功: ${result}`);
},
(error) => {
console.error(`失敗: ${error.message}`);
}
);
// 条件に応じてPromiseを解決または拒否する
// 成功
resolve('ok!');
// 失敗
reject(new Error('error!'));
Object.groupBy
Object.groupBy
は、オブジェクト内の要素を特定の基準に基づいてグループ化するメソッド。
データの集計や整理を簡単に行うことができそう。
people
配列内のオブジェクトをage
プロパティに基づいてグループ化して、同じ年齢の人々が同じグループにまとまる。
(なんとなく、よくあるフィルター機能とかで使えそう?)
const people = [
{ name: "Alice", age: 30 },
{ name: "Bob", age: 25 },
{ name: "Charlie", age: 30 },
{ name: "David", age: 25 },
{ name: "Eve", age: 35 }
];
const groupedByAge = Object.groupBy(people, person => person.age);
console.log(groupedByAge);
上記のconsole
結果
{
"25": [{
"name": "Bob",
"age": 25
},
{
"name": "David",
"age": 25
}
],
"30": [{
"name": "Alice",
"age": 30
},
{
"name": "Charlie",
"age": 30
}
],
"35": [{
"name": "Eve",
"age": 35
}]
}
Map.groupBy
Map.groupBy
は、Mapオブジェクト内の要素を特定の基準に基づいてグループ化するメソッド。
Object.groupBy
に似ているが、Mapオブジェクトに適用される。
Mapオブジェクト内のエントリをage
プロパティに基づいてグループ化。
const people = new Map([
[1, { name: "Alice", age: 30 }],
[2, { name: "Bob", age: 25 }],
[3, { name: "Charlie", age: 30 }],
[4, { name: "David", age: 25 }],
[5, { name: "Eve", age: 35 }]
]);
const groupedByAge = Map.groupBy(people, ([key, person]) => person.age);
console.log(groupedByAge);
上記のconsole
結果
new Map([
[
30,
[
[
1,
{
"name": "Alice",
"age": 30
}
],
[
3,
{
"name": "Charlie",
"age": 30
}
]
]
],
[
25,
[
[
2,
{
"name": "Bob",
"age": 25
}
],
[
4,
{
"name": "David",
"age": 25
}
]
]
],
[
35,
[
[
5,
{
"name": "Eve",
"age": 35
}
]
]
]
])
Discussion