Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环嵌套数组并过滤掉所有条目?_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 循环嵌套数组并过滤掉所有条目?

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

我有一个类似下面的对象-如何循环每个ID/键中的所有项目,并返回所有条目,以便在ES6中成为一个单独的筛选对象

我应该看看.filter/.map/reduce还是类似Object.entries的东西?我已经试过了。减少,但我不能完全控制住它:(

希望的产出是:

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;
});