繁体   English   中英

在数组上添加对象更新上一个对象

[英]adding object on array updates previous object

我有关于将对象放在数组上的问题。 我这样做是为了记录活动的历史记录,所以我将每个对象都存储在一个数组中。 但是当我按下它时,先前的对象数据会用当前数据更新。 我不知道问题出在哪里? 我真的需要帮助。 谢谢。

我试图克隆这个对象:

function deepCopy(obj) {
if (Object.prototype.toString.call(obj) === '[object Array]') {
        var out = [], i = 0, len = obj.length;
        for ( ; i < len; i++ ) {
            out[i] = arguments.callee(obj[i]);
        }
        return out;
    }
    if (typeof obj === 'object') {
        var out = {}, i;
        for ( i in obj ) {
            out[i] = arguments.callee(obj[i]);
        }
        return out;
    }
    return obj;
}

但在这里仍然没有运气。 :(

问题很可能是你一遍又一遍地推动同一个对象。 例:

var obj = {};
var arr = [];
for (var i = 0; i < 10; i++) {
  obj.index = i;
  arr.push(obj);
}

结果是一个包含对同一对象的十个引用的数组。

您必须每次都创建一个新的对象实例。 例:

var arr = [];
for (var i = 0; i < 10; i++) {
  var obj = {};
  obj.index = i;
  arr.push(obj);
}

结果是一个数组,其中有十个对十个独立对象的引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM