Javascript 循环嵌套数组并过滤掉所有条目?
我有一个类似下面的对象-如何循环每个ID/键中的所有项目,并返回所有条目,以便在ES6中成为一个单独的筛选对象 我应该看看.filter/.map/reduce还是类似Object.entries的东西?我已经试过了。减少,但我不能完全控制住它:( 希望的产出是:Javascript 循环嵌套数组并过滤掉所有条目?,javascript,ecmascript-6,Javascript,Ecmascript 6,我有一个类似下面的对象-如何循环每个ID/键中的所有项目,并返回所有条目,以便在ES6中成为一个单独的筛选对象 我应该看看.filter/.map/reduce还是类似Object.entries的东西?我已经试过了。减少,但我不能完全控制住它:( 希望的产出是: The example of the output is this: { [{ "id": 25899, "timestamp": "2017-08-15T21:26:42Z", "ty
The example of the output is this: {
[{
"id": 25899,
"timestamp": "2017-08-15T21:26:42Z",
"type": "alarm",
"code": 190,
"title": "",
"description": "",
"appeared": "2017-08-15T21:26:40Z",
"disappeared": null,
"acknowlegded": null,
"solved": null,
"system_name": "Randers pr 44b sidste station"
}, {
"id": 26157,
"timestamp": "2017-08-15T21:32:17Z",
"type": "alarm",
"code": 190,
"title": "",
"description": "",
"appeared": "2017-08-15T21:32:06Z",
"disappeared": null,
"acknowlegded": null,
"solved": null,
"system_name": "Randers pr 44b sidste station"
}, {
"id": 23777,
"timestamp": "2017-08-15T20:38:08Z",
"type": "alarm",
"code": 191,
"title": "",
"description": "",
"appeared": "2017-08-15T20:38:00Z",
"disappeared": null,
"acknowlegded": null,
"solved": null,
"system_name": "Favrskov Svenstrup gyvelvej"
}, {
"id": 23779,
"timestamp": "2017-08-15T20:38:08Z",
"type": "alarm",
"code": 190,
"title": "",
"description": "",
"appeared": "2017-08-15T20:37:58Z",
"disappeared": null,
"acknowlegded": null,
"solved": null,
"system_name": "Favrskov Svenstrup gyvelvej"
}
]
}在找这样的东西吗 如果是这样的话,不要只是复制/粘贴,而是试着理解它为什么以及如何工作
let jsonObj={“系统事件”:{“1013”:[{“id”:25899,“时间戳”:“2017-08-15T21:26:42Z”,“类型”:“报警”,“代码”:190,“标题”:“描述”:“出现”:“2017-08-15T21:26:40Z”,“消失”:null,“确认”:null,“已解决”:null,“系统名称”:“Randers pr 44b sidste站”},“id”:26157,“时间戳”:“2017-08-15T21:32:17Z”,“类型”:“报警”,“代码”:190,“标题”:“描述”:“出现”:“2017-08-15T21:32:06Z”,“消失”:空,“确认”:空,“解决”:空,“系统名称”:“Randers pr 44b sidste station”}],“1015”:[{“id”:23777,“时间戳”:“2017-08-15T20:38:08Z”,“类型”:“报警”,“代码”:191,“标题”:“描述”:“出现”:“2017-08-15T20:38:00Z”,“消失”:空,“确认”:null,“已解决”:null,“系统名称”:“Favrskov Svenstrup gyvelvej”},{“id”:23779,“时间戳”:“2017-08-15T20:38:08Z”,“类型”:“报警”、“代码”:190,“标题”:“描述”:“出现”:“2017-08-15T20:37:58Z”,“消失”:null,“已确认”:null,“已解决”:null,“系统名称”:“Favrskov Svenstrup gyvelvej”};
让数据=[];
key(jsonObj.system\u事件).forEach(key=>{
system_events[key].forEach(d=>data.push(d));
});
console.log(数据)
可能是这样的
Object.keys(obj.system_events).map((id) => {
return obj.system_events[id];
}).reduce((result, array) => {
return result.concat(array);
}, [])
如果要添加筛选搜索条件,可以尝试以下操作
let searchCriteria = {
id: 23779,
code: 190
};
Object.keys(obj.system_events).map((id) => {
return obj.system_events[id];
}).reduce((result, array) => {
return result.concat(array);
}, []).filter((obj) => {
// do your filtering here.
let field;
for (field in searchCriteria) {
if (searchCriteria[field] !== obj[field]) {
return false;
}
}
return true;
});
是的,你应该试着给出一个预期输出格式的示例。当然,我想收集每个“ID/编号”中的所有项目,都在一个过滤对象中…有意义吗?@nuffsaid这不是Reiner所要求的输出示例…每个数组成员中的键都是相同的,因此最终只有一个对象(如果我理解正确的话)。如其他人所说,一个所需输出的示例将很有帮助。
let searchCriteria = {
id: 23779,
code: 190
};
Object.keys(obj.system_events).map((id) => {
return obj.system_events[id];
}).reduce((result, array) => {
return result.concat(array);
}, []).filter((obj) => {
// do your filtering here.
let field;
for (field in searchCriteria) {
if (searchCriteria[field] !== obj[field]) {
return false;
}
}
return true;
});