を置くが、私が持っているコードです:ループのためのjavascriptここで新しい配列に
let testp = {
value: ''
}
let data = [];
for (let i = 0; i < 5; i++) {
testp.value = i;
data.push(testp);
}
console.log(data)
データリターンがある:
[ { value: 4 },
{ value: 4 },
{ value: 4 },
{ value: 4 },
{ value: 4 } ]
なぜですか?私は結果は次のようにだと思う:あなたが行うことができ、ループ内testp.value割り当て
[ { value: 0 },
{ value: 1 },
{ value: 2 },
{ value: 3 },
{ value: 4 } ]
が問題 – user93
を引き起こした 'testp'のJavaScriptオブジェクトへの参照です。 'data.push(testp)'を呼び出すと、同じオブジェクトへの別の参照を配列に追加するだけです。オブジェクトの現在の状態のコピーではありません – Hamms
JavaScriptは値ではなく参照でオブジェクトを渡すので、すべての値に対して '4'が得られます。したがって、異なるオブジェクトではなく、ループの繰り返しごとに同じオブジェクトを変更しています。 – fubar