我不明白为什么当我推送object时,数组中的所有值都会改变?请参阅下面的Chrome控制台:
kakebo ={
title: "",
date: "",
status : "",
solde: 0,
entry_up: [
{ name: "", amount:0},
],
entry_down: [
{ name: "", amount:0},
]
};日志:{title:"",date:"",status:"",solde: 0,entry_up: Array(1),…}
kakebos = [];日志:[]
kakebo.title = "test1"日志:"test1“
kakebos.push(kakebo);
kakebos日志:[{…}]0: {title: "test1", date: "", status: "", solde: 0, entry_up: Array(1), …}
kakebo.title = "test2"日志:"test2“
kakebos.push(kakebo);日志: kakebos (2) {…},{…}第1行:0:{标题:"test2",日期:"",状态:"",solde: 0,entry_up:数组(1),…}第2行:1:{标题:"test2",日期:"",状态:"",solde: 0,entry_up:数组(1),…}
发布于 2017-08-12 20:51:33
您不是在推送两个不同的对象,而是实际上只推送一个对象,然后更改其标题。
var el = {prop:1}, arr = [];
arr.push(el);//el is added to the array
el.prop = 2;//el is changed
arr.push(el);//el is added a second time您可以通过在添加之前复制对象来解决此问题:
arr.push(Object.assign({},el));或者,您可以简单地设置多个对象:
var el = {prop:1}, arr = [];
arr.push(el);//el is added to the array
var el2 = {prop:2};
arr.push(el2);https://stackoverflow.com/questions/45650378
复制相似问题