从对象创建嵌套数组失败
Creating an nested array from an object fails
我将这些数据存储在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
结果仍然是一个对象。我该怎么解决这个问题?。
typeof
没有人们希望的那么有用。相反,您可以使用:
console.log(Array.isArray(result));
如果查看typeof
的文档,您会发现数组总是为typeof运算符返回"object"。在javascript中,数组和对象之间几乎没有区别。
问题是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));
相关文章:
- 在数组中插入对象失败
- $q.all当输入数组中的一项不是promise时,Typescript检查器失败
- 断言错误:断言失败:坐标数组的长度应与步幅匹配
- ember dev fixes错误:“;断言失败:findAll的响应必须是数组,而不是未定义的“”;
- 去掉js可观察数组和复选框,选中绑定失败
- 在 ie8 中使用茉莉花比较数组失败
- 克隆对象数组失败
- Ember 断言失败:来自 findQuery 的响应必须是数组,而不是未定义
- 循环遍历 ArrayController 失败,因为它不是数组,即使控制器具有正确的数据模型也是如此
- 从数组获取非重复索引在 0 时失败
- 将对象推入数组失败
- 在函数中破坏数组失败;let未被定义”;
- 执行请求数组失败,并多次调用Error: done().映射请求数组不会触发请求
- 通过 Ajax 发送数组失败
- 尝试将数学公式的值输出到数组失败
- 包含对象逻辑的Javascript数组失败.出了什么问题
- 访问数组失败,数组是 Javascript 中对象的属性
- 为什么在javascript中填充2D数组失败
- 构建 JavaScript 对象数组失败
- JSON.用object解析数组失败