我正在用我的XML数据创建一个对象并将其推入数组。但是当它从方法中出来时,我可以看到所有数组值都是第一个数组的副本。谁能帮我。

这是我的代码:

var obj = {};
for(var i = 1; i < myData.length; i++) {

    var myDAtt = myData[i].getElementsByTagName('D');

    for(var j = 0; j < myDAtt.length; j++){
        obj[myDAtt[j].getAttribute('dataIndex')] = myDAtt[j].getAttribute('V')
    }

    me.Rec.push(obj);
}

最佳答案

您需要在顶级for循环中创建一个新对象。在您的情况下,您只有一个变量,要为其添加属性并将其推入其引用的数组中。因此,最后您有了一个大对象,并将其引用多次推入数组。

for(var i = 1; i < myData.length; i++) {

    var obj = {};
    var myDAtt = myData[i].getElementsByTagName('D');

    for(var j = 0; j < myDAtt.length; j++) {
        obj[myDAtt[j].getAttribute('dataIndex')] = myDAtt[j].getAttribute('V')
    }

    me.Rec.push(obj);
}

关于javascript - 数组正在覆盖先前的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47412229/

10-11 17:33