在数组中插入对象失败

Inserting an object inside an array fails

本文关键字:对象 失败 插入 数组      更新时间:2023-09-26

我从mongodb 中提取了这些数据

{
    "_id" : "RLvWTcsrbRXJeTqdB",
    "examschoolid" : "5FF2JRddZdtTHuwkx",
    "examsubjects" : [
        {
            "subject" : "Z4eLrwGwqG4pw4HKX"
        },
        {
            "subject" : "fFcWby8ArpboizcT9"
        }
    ],
    "examay" : "NrsP4srFGfkc5cJkz",
    "examterm" : "5A5dNTgAkdRr5j53j",
    "examclass" : "gYF2wE4wBCRy9a3ZC",
    "examname" : "First",
    "examdate" : ISODate("2016-05-07T22:41:00Z"),
    "examresultsstatus" : "notreleased"
}

我想迭代examsubjects,最后在数组中插入一个对象,得到一个像这样的数组

"examsubjects" : [
{
"Z4eLrwGwqG4pw4HKX" : "0",
"fFcWby8ArpboizcT9" : "0"
}
],

这是我的代码

 var result = new Array();
    for (i = 0; i < doc.examsubjects.length; i++) {
        var arr = {};
        for (var prop in doc.examsubjects[i]) {
            arr[doc.examsubjects[i][prop]] = 0;
        }
        result.push(arr);
    }

这给了我这个阵列

"examsubjects" : [
        {
            "Z4eLrwGwqG4pw4HKX" : 0
        },
        {
            "fFcWby8ArpboizcT9" : 0
        }
    ],

我怎样才能得到我想要的数组?。

在您的尝试中,初始化一个空数组,并为examsubjects数组中的每个对象推送一个新对象,此时您要做的是将所有考试科目的数据只放入一个对象中,而此时您显然想加入一个数组。实现这一点的多种方法之一是这样的:

var result = [{}];
for (i = 0; i < doc.examsubjects.length; i++) {
    for (var prop in doc.examsubjects[i]) {
        // Here we repeatedly modify the single
        // object in our results array
        result[0][doc.examsubjects[i][prop]] = 0;
    }
}
// result now looks like [{"Z4eLrwGwqG4pw4HKX": "0", "fFcWby8ArpboizcT9": 0"}]