blog

Array.fill()を使ってオブジェクトを埋める際の問題点

これではうまくいかないので、mapを使ってデータを埋めます。 最終的な解決策は、まず配列の各項目をnullで埋めて、配列が長さだけでなくデータ項目を持つようにし、次にmapを使って各項目をnewObj...

Jun 5, 2020 · 1 min. read
シェア

Array.fill()を使って配列を空白のオブジェクトで埋めたい場合は、次のように注意する必要があります。

Array(length).fill({ }) これは、作成された配列に、{ } 項目をすべてまったく同じように埋め込みます。

let arr = Array(6).fill({}); console.log(arr[1] === arr[2]) //true //たとえ newObjectを使ったとしても、各項目は等しい。 let other = Array(6).fill( new Object() ) console.log(other[1] === other[2]) //true //オブジェクト.create({ }), 同じように動作する let arr_new = Array(6).fill( Object.create({}) ) console.log(arr_new[1] === arr_new[2]) //true

それではうまくいかないので、地図を使ってデータを埋めてください。

Array(6).map(item => return new Object() ) // 戻り値 [empty × 6] Array(6).map(item => { console.log("行くのか行かないのか?) return new Object() }) //配列をアイテムで埋めずに長さを宣言すると、mapメソッドはそれをスキップし、forEachメソッドもそれをスキップすることがわかった!

究極の解決策

  1. 配列の各項目を最初に null で埋めて、配列が長さだけでなくデータ項目も持つようにします。

  2. 各項目を new Object( ) としてマップに置き換えます。

なんで変な感じなの?

Read next

javascriptの配列

配列 1, 配列の作成 2, 配列の検出 3, スタックとキュー 4, 並べ替えメソッド, 元の配列の変更, slice() による新しい配列の作成, No

Jun 5, 2020 · 9 min read