我有和对象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))
结果是[]
为什么? 我错过了什么? 我该如何解决?
I have and object db_parsed
when I run console.log(JSON.stringify(db_parsed, null, 4))
the result is:
{ "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" } ] ] }but when I run console.log(db_parsed.data.filter(obj => obj.age === 22))
the result is []
Why? What am i missing? How do I fix this?
最满意答案
db_parsed.data是一个包含数组的数组 。
第二层数组包含对象。
你的过滤器代码试图处理这些对象,并直接在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))db_parsed.data is an array containing arrays.
That second level of arrays contains objects.
Your filter code is trying to treat those objects and being directly inside db_parsed.data instead of inside db_parsed.data[0], db_parsed.data[1] and db_parsed.data[2].
You could use reduce to concatenate all the second level of arrays into one, and then filter on that.
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))
更多推荐
发布评论