首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript“推送”-基础版

JavaScript“推送”-基础版
EN

Stack Overflow用户
提问于 2017-08-12 20:39:47
回答 1查看 42关注 0票数 0

我不明白为什么当我推送object时,数组中的所有值都会改变?请参阅下面的Chrome控制台:

代码语言:javascript
复制
 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),…}

代码语言:javascript
复制
kakebos = [];

日志:[]

代码语言:javascript
复制
kakebo.title = "test1"

日志:"test1“

代码语言:javascript
复制
kakebos.push(kakebo);

kakebos

日志:[{…}]0: {title: "test1", date: "", status: "", solde: 0, entry_up: Array(1), …}

代码语言:javascript
复制
kakebo.title = "test2"

日志:"test2“

代码语言:javascript
复制
kakebos.push(kakebo);

日志: kakebos (2) {…},{…}第1行:0:{标题:"test2",日期:"",状态:"",solde: 0,entry_up:数组(1),…}第2行:1:{标题:"test2",日期:"",状态:"",solde: 0,entry_up:数组(1),…}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-12 20:51:33

您不是在推送两个不同的对象,而是实际上只推送一个对象,然后更改其标题。

代码语言:javascript
复制
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

您可以通过在添加之前复制对象来解决此问题:

代码语言:javascript
复制
arr.push(Object.assign({},el));

或者,您可以简单地设置多个对象:

代码语言:javascript
复制
var el = {prop:1}, arr = [];

arr.push(el);//el is added to the array

var el2 = {prop:2};

arr.push(el2);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45650378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档