起因:用for循环将对象push到数组里面,但是没想到后面发现数组里面都是一样的值?!
代码如下:
var arr1 = [];
var obj = {};
for (var i = 0; i < 3; i++) {
obj.id = i;
arr1.push(obj);
}
console.log(arr1);
结果如下:
看到结果,发现都是相同的,而且是最后一个值,猜测是对象只存了一个引用的原因。
var arr = [];
arr.push(1);
var obj = {};
obj.id = 1;
arr.push(obj);
obj.id = 2;
arr.push(obj);
console.log(arr);
console.log(obj.toString());
console.log(JSON.stringify(obj));
console.log(JSON.stringify(arr));
结果:
处理方法:在for循环里面定义变量,让它每次都是新的一个对象。