我将这些数据存储在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" : [
{
"subject" : "Z4eLrwGwqG4pw4HKX"
},
{
"subject" : "fFcWby8ArpboizcT9"
}
],
我正在尝试获取上面的部分并将其转换为看起来像这样的数组
[{
"Z4eLrwGwqG4pw4HKX" : "0",
"fFcWby8ArpboizcT9" : "0"
}],
上面的值成为构成新数组的键。我正在使用此代码
console.log(doc.examsubjects);
var result = new Array();
for (i = 0; i < doc.examsubjects.length; i++) {
var arr = [];
for (var prop in doc.examsubjects[i]) {
arr.push(doc.examsubjects[i][prop]);
}
result.push(arr);
console.log(typeof result);//object
}
运行代码后console.log(typeof result);//object
结果仍然是一个对象。我该如何解决这个问题?。
答案 0 :(得分:1)
typeof
没有人想象的那么有用。相反,您可以使用:
console.log(Array.isArray(result));
答案 1 :(得分:1)
如果look位于typeof
documentation,您会看到数组始终为typeof运算符返回“object”。在javascript中,数组和对象之间的差别很小。
答案 2 :(得分:0)
事情是 - JavaScript中的数组是对象。它们从Array构造函数继承不同的方法,但检查类型将返回'object'。 您可以使用Array.isArray()方法快速检查结果是否为数组:
console.log(Array.isArray(result));
或者在使用旧版浏览器时使用polyfill:
function is_array(obj) {
return typeof obj === 'object' && obj.constructor === Array;
}
console.log(is_array(result));