JavaScriptで配列からオブジェクトを作るベストプラクティス
Discussion
JavaScriptで配列の値をキー、配列の値を加工したものを値に持つオブジェクトを作成する際のベストプラクティスを知りたいです。
例として、1から100までの整数が入った配列と引数が素数かどうかを返す関数があるとします。
const nums = Array(100).fill(0).map((_, i) => i + 1)
function isPrime(num) {
// 素数を判定する何らかの処理...
}
上記の nums
と isPrime
を使って、以下のようなオブジェクトを得る際の書き方についてです。
const primeMapSample = {
1: false,
2: true,
3: true,
4: false,
// ...
99: false,
100: false,
}
作り方としてパッと思いついたのは以下の三つです。
この中だとどれが良い、もっと良い書き方があるといった回答を頂ければと思います。(良いと判断する基準も教えてください)
私は以下の中では三つ目の物が一番好きです。オブジェクトに値を入れていることが分かりやすく、const で完結しているためです。
// method 1
let primeMap1 = {}
for (let num of nums) {
primeMap1[num] = isPrime(num)
}
// method 2
const primeMap2 = nums.map((num) => ({[num]: isPrime(num)}))
.reduce((all, part) => ({...all, ...part}), {})
// method 3
const primeMap3 = nums.reduce((all, num) =>
(all[num] = isPrime(num), all),
{}
)