Rub*_*edo 1 javascript arrays object filter 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"
}
]
]
}
Run Code Online (Sandbox Code Playgroud)
但是当我跑 console.log(db_parsed.data.filter(obj => obj.age === 22))
结果是 []
为什么?我错过了什么?我该如何解决?
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))
Run Code Online (Sandbox Code Playgroud)