我不明白为什么当我推送对象时数组中的所有值都会发生变化? 请参阅下面的 Chrome 控制台:
kakebo ={
title: "",
date: "",
status : "",
solde: 0,
entry_up: [
{ name: "", amount:0},
],
entry_down: [
{ name: "", amount:0},
]
};
log : {title: ", date: ",status: ", solde: 0, entry_up: Array(1(, ...}
kakebos = [];
日志 : []
kakebo.title = "test1"
日志:"测试1">
kakebos.push(kakebo);
kakebos
日志 :[{…}]0: {title: "test1", date: "", status: "", solde: 0, entry_up: Array(1), …}
kakebo.title = "test2"
日志:"测试2">
kakebos.push(kakebo);
.log: 卡克博斯 (2) [{...}, {...}] 第 1 行 : 0 : {title: "test2", date: ", status: ", solde: 0, entry_up: Array(1(, ...} 第 2 行 : 1 : {title: "test2", date: ", status: ", solde: 0, entry_up: Array(1(, ...}
您不是在推送两个不同的对象,而实际上只是一个对象,并更改其标题。
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);