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メソッドもそれをスキップすることがわかった!
究極の解決策
配列の各項目を最初に null で埋めて、配列が長さだけでなくデータ項目も持つようにします。
各項目を new Object( ) としてマップに置き換えます。
なんで変な感じなの?