在数组中存储对象的Javascript

在数组中存储对象的Javascript,javascript,arrays,Javascript,Arrays,我想访问上述数据,将每个名称和id存储在名为lob的对象中,并将每个对象存储在数组returnLOB中 每次我循环和console.log(lob),我都会得到正确的对象,比如:RYI-id:2和BIB-id:1 但是当我尝试将它们存储在returnLOB数组中时,它会输出第二个对象两次,而不是每个对象输出一次 知道这里出了什么问题吗?函数(数据){ {"name":"RYI","id":2,"name":"BIB","id":1} var returnLOB=[];//数组初始化 对于(va

我想访问上述数据,将每个名称和id存储在名为
lob
的对象中,并将每个对象存储在数组
returnLOB

每次我循环和
console.log(lob)
,我都会得到正确的对象,比如:RYI-id:2BIB-id:1

但是当我尝试将它们存储在
returnLOB
数组中时,它会输出第二个对象两次,而不是每个对象输出一次

知道这里出了什么问题吗?

函数(数据){
{"name":"RYI","id":2,"name":"BIB","id":1}
var returnLOB=[];//数组初始化 对于(var i1r=0;i1r

将lob的声明移动到循环中。现在,您正在重用同一对象并将其多次添加到数组中。每次循环都会更新同一个对象。

每次尝试创建lob对象,否则您只是反复添加同一个对象,每次都更改其值。另外,您的代码可以通过使用“for…in”循环来简化,如图所示:

function(data) {
        var returnLOB = []; //array init
        for (var i1r= 0; i1r < data.length; i1r++) { 
                var lob = new LOBslist(); //new object
                var cLob = data[i1r];
                lob.name = cLob.name;
                lob.id = cLob.id;

                returnLOB.push(lob); //adding to array?
                console.log(lob); //right here

        }

        console.log(returnLOB);
        return returnLOB;

    }

从JSON的角度来看,您的数据格式是错误的。这其实并不违法。。。但是,由于JSON键(在同一级别上)需要是uniquedata,因此您将自动得到2个键/值对中的一个。Data应该是一个对象数组。比如[{“name”:“RYI”,“id”:2},{“name”:“BIB”,“id”:1}]
function(data) {
        var returnLOB = []; //array init
        for (var i1r= 0; i1r < data.length; i1r++) { 
                var lob = new LOBslist(); //new object
                var cLob = data[i1r];
                lob.name = cLob.name;
                lob.id = cLob.id;

                returnLOB.push(lob); //adding to array?
                console.log(lob); //right here

        }

        console.log(returnLOB);
        return returnLOB;

    }
function(data) {
    var lob;
    var returnLOB = []; //array init
    for (var cLob in data) { 
            lob = new LOBslist(); //new object
            lob.name = cLob.name;
            lob.id = cLob.id;

            returnLOB.push(lob); //adding to array?
            console.log(lob); //right here
    }

    console.log(returnLOB);
    return returnLOB;
}