繁体   English   中英

尚未读取对象的node.js

[英]Object is not been read node.js

我有和对象db_parsed

当我运行console.log(JSON.stringify(db_parsed, null, 4))

结果是:

{
    "data": [
        [
            {
                "name": "Me",
                "age": 23,
                "sex": "M"
            },
            {
                "name": "Wonderwoman",
                "age": 22,
                "sex": "F"
            }
        ],
        [
            {
                "name": "ALbert The Man",
                "age": 22,
                "sex": "M"
            }
        ],
        [
            {
                "name": "Leonard Johnson",
                "age": 23,
                "sex": "M"
            }
        ]
    ]
}

但是当我运行console.log(db_parsed.data.filter(obj => obj.age === 22))

结果是[]

为什么? 我想念什么? 我该如何解决?

db_parsed.data是一个包含arrays的数组

第二层数组包含对象。

您的过滤器代码试图治疗的那些对象,并直接作为内部db_parsed.data代替内部db_parsed.data[0] db_parsed.data[1]db_parsed.data[2]

您可以使用reduce将所有第二个级别的数组连接为一个,然后对其进行过滤。

 var db_parsed = { "data": [ [{ "name": "Me", "age": 23, "sex": "M" }, { "name": "Wonderwoman", "age": 22, "sex": "F" } ], [{ "name": "ALbert The Man", "age": 22, "sex": "M" }], [{ "name": "Leonard Johnson", "age": 23, "sex": "M" }] ] }; console.log(db_parsed.data.reduce((a,b) => a.concat(b), []).filter(obj => obj.age === 22)) 

您可以执行[].concat.apply([], db_parsed.data)然后过滤对象数组:

 const db_parsed = {"data": [[{"name": "Me","age": 23,"sex": "M"},{"name": "Wonderwoman","age": 22,"sex": "F"}],[{"name": "ALbert The Man","age": 22,"sex": "M"}],[{"name": "Leonard Johnson","age": 23,"sex": "M"}]]}; const result = [].concat.apply([], db_parsed.data).filter(obj => obj.age === 22); console.log(result); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM