配列内のオブジェクト全体を置き換えたい。
var array = [ {name: "name1" }, { name: "name2" } ];
var element = array[0];
element = {name: "name3"};
alert(array[0].name);
このコードでは、出力 name3 が期待されますが、なぜこのように配列内のオブジェクト全体を置き換えることができないのでしょうか? そして、これを行う良い方法は何ですか?
配列内のオブジェクト全体を置き換えたい。
var array = [ {name: "name1" }, { name: "name2" } ];
var element = array[0];
element = {name: "name3"};
alert(array[0].name);
このコードでは、出力 name3 が期待されますが、なぜこのように配列内のオブジェクト全体を置き換えることができないのでしょうか? そして、これを行う良い方法は何ですか?
正しい方法は
array[0] = {name: "name3"};
で最初の要素への参照*を取得しているため、既存のコードは期待どおりに機能しません
var element = array[0];
次に、このローカル変数の値を別のオブジェクトに置き換えています。これにより、元の配列は変更されません。
これを試して :
var array = [ {name: "name1" }, { name: "name2" } ];
array[0] = {name: "name3"};
alert(array[0].name);
element
は実際の配列ではありません - 配列のコピーです