[英]javascript filter values from arrays of objects
I'm trying to find is_Y === 'Y' object from like this code我试图从这样的代码中找到 is_Y === 'Y' object
const tmpArray = [ [{ "no": 1, "is_Y": "Y", }], [{ "no": 2, "is_Y": "N", }], [{ "no": 3, "is_Y": "Y", }], [{ "no": 3, "is_Y": "N", }], [{ "no": 4, "is_Y": "Y", }], [{ "no": 5, "is_Y": "N", }, { "no": 6, "is_Y": "Y", }] ]; function findY(array) { return array.filter(function (item) { return item.filter(function (item2) { return item2.is_Y === 'Y'; }); }); } console.log(findY(tmpArray));
result is结果是
[
[ { no: 1, is_Y: 'Y' } ],
[ { no: 2, is_Y: 'N' } ],
[ { no: 3, is_Y: 'Y' } ],
[ { no: 3, is_Y: 'N' } ],
[ { no: 4, is_Y: 'Y' } ],
[ { no: 5, is_Y: 'N' }, { no: 6, is_Y: 'Y' } ]
]
but I'd like to get results format like below但我想得到如下格式的结果
[
{ no: 1, is_Y: 'Y' },
{ no: 3, is_Y: 'Y' },
{ no: 4, is_Y: 'Y' },
{ no: 6, is_Y: 'Y' }
]
what shall I do?我该怎么办?
The easiest fix is to add an flat()
before calling filter()
:最简单的解决方法是在调用
filter()
flat()
) :
const tmpArray = [ [{ "no": 1, "is_Y": "Y", }], [{ "no": 2, "is_Y": "N", }], [{ "no": 3, "is_Y": "Y", }], [{ "no": 3, "is_Y": "N", }], [{ "no": 4, "is_Y": "Y", }], [{ "no": 5, "is_Y": "N", }, { "no": 6, "is_Y": "Y", }] ]; function findY(array) { return array.flat().filter(item2 => item2.is_Y === 'Y') } console.log(findY(tmpArray));
Output: Output:
[
{
"no": 1,
"is_Y": "Y"
},
{
"no": 3,
"is_Y": "Y"
},
{
"no": 4,
"is_Y": "Y"
},
{
"no": 6,
"is_Y": "Y"
}
]
Just flat
the array before you filter.在过滤之前将阵列展
flat
。
const tmpArray = [ [{ no: 1, is_Y: "Y" }], [{ no: 2, is_Y: "N" }], [{ no: 3, is_Y: "Y" }], [{ no: 3, is_Y: "N" }], [{ no: 4, is_Y: "Y" }], [ { no: 5, is_Y: "N" }, { no: 6, is_Y: "Y" }, ], ]; function findY(array) { return array.flat().filter((item) => item.is_Y === "Y"); } console.log(findY(tmpArray));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.