问题: 在js中往数组中push数据时,总是被对象的最后一个值所覆盖
然后我在网上找到了解决办法,下面是代码模拟:
var json = { top: '400px', width: '500px', height: '300px' };
var data = {};//在外面定义对象
var datas = [];
for (key in json) {
data.name = key;
datas.push(data);
}
console.log(datas)
然后输出结果:
原因:
:
也就是说每次循环的时候的时候,都将data.name值给覆盖了,导致最后结果就是data.name值是最后一个数据的值。
解决办法就很简单了:
就是每次循环的时候就建立一个新的对象,
var json = { top: '400px', width: '500px', height: '300px' };
var datas = [];
for (key in json) {
var data = {};//每次循环的时候,新建对象
data.name = key;
datas.push(data);
}
console.log(datas)
看起来很简单吧,但就是这点小问题,会让你一时找不出原因,所以逻辑一定要摆对。
这样之后输出的结果就是你想要的结果了。