无法在javascript的嵌套对象/数组中正确循环
Unable to loop through properly in nested object/array in javascript
我有一个对象(来自MongoDB),看起来像这样:
var test = [
{
"_id": "1",
"childs": [
{
"name": "First child",
"child_id": 1
},
{
"name": "Second child",
"child_id": 2
}
]
},
{
"_id": "2",
"childs": [
{
"name": "First child",
"child_id": 1
}
]
}
];
我试图通过这个循环,并显示每个子作为一个单独的项目。我是这样做的:
var response_items = [];
//Process relays as individual devices
test.forEach(function(device) {
var response_item = {};
response_item._id = device._id;
//Process relays as individual devices
device.childs.forEach(function(child) {
response_item.name = child.name;
response_item.child_id = child.child_id;
//Return devices
response_items.push(response_item);
});
});
console.log(response_items);
但由于某些原因,这是我得到的结果:
Array (3)
{_id: "1", name: "Second child", child_id: 2}
{_id: "1", name: "Second child", child_id: 2}
{_id: "2", name: "First child", child_id: 1}
第三项是正确的,但是第一项和第二项是重复的,我不知道我做错了什么。
示例:https://jsfiddle.net/om89y661/
var test = [
{
"_id": "1",
"childs": [
{
"name": "First child",
"child_id": 1
},
{
"name": "Second child",
"child_id": 2
}
]
},
{
"_id": "2",
"childs": [
{
"name": "First child",
"child_id": 1
}
]
}
];
var response_items = [];
//Process relays as individual devices
test.forEach(function(device) {
//Process relays as individual devices
device.childs.forEach(function(child) {
var response_item = {};
response_item._id = device._id;
response_item.name = child.name;
response_item.child_id = child.child_id;
//Return devices
response_items.push(response_item);
});
});
console.log(response_items);
使用Array.reduce()
以纯函数方式平化数组,如下所示:
var test = [
{
"_id": "1",
"childs": [
{
"name": "First child",
"child_id": 1
},
{
"name": "Second child",
"child_id": 2
}
]
},
{
"_id": "2",
"childs": [
{
"name": "First child",
"child_id": 1
}
]
}
];
var result = test.reduce(function (accumulator, current) {
var mappedRes = current.childs.map(function (item) {
item._id = current._id;
return item;
});
return accumulator.concat(mappedRes);
}, []);
console.log(result);
相关文章:
- javascript:数组循环
- 如何将数组循环到JSON代码中
- 而与数组循环
- JavaScript 数组/循环不起作用
- AJAX在数组循环中调用,只在上一次完成后调用next
- 数组循环以获取单个值
- JavaScript数组循环
- Javascript 2D数组循环停止
- 通过Javascript中的JSON数组循环
- 为什么以下 forEach 数组循环未返回未定义
- 如何在数组循环中过滤数据
- 如何在数组循环 222 中过滤数据
- 数组循环以确定范围平均值
- 对象的数组循环
- 对象键及其值的数组循环
- 虽然的缺点!未定义的数组循环
- 数组循环导致无限循环
- 数组循环 - 处理下拉列表中的空值
- 在 Node 中连接数组循环.js glob 结果
- JavaScript 图像数组循环