8

配列内のオブジェクト全体を置き換えたい。

http://jsfiddle.net/CWSbJ/

var array = [ {name: "name1" }, { name: "name2" } ];
var element = array[0];
element = {name: "name3"};
alert(array[0].name);

このコードでは、出力 name3 が期待されますが、なぜこのように配列内のオブジェクト全体を置き換えることができないのでしょうか? そして、これを行う良い方法は何ですか?

4

2 に答える 2

16

正しい方法は

array[0] = {name: "name3"};

で最初の要素への参照*を取得しているため、既存のコードは期待どおりに機能しません

var element = array[0];

次に、このローカル変数の値を別のオブジェクトに置き換えています。これにより、元の配列は変更されません。

于 2012-05-21T10:39:36.350 に答える
2

これを試して :

var array = [ {name: "name1" }, { name: "name2" } ];
array[0] = {name: "name3"};
alert(array[0].name);

elementは実際の配列ではありません - 配列のコピーです

于 2012-05-21T10:40:52.767 に答える