![](/img/trans.png)
[英]How to search object in nested object by property and return object with parent object's key and value?
[英]How to return parent object by filtering nested property
我正在尝试使用嵌套对象过滤数组,但是在对子属性进行过滤时不会返回父对象。
let line = "xyz";
let data = [
{
"header": {
"po_no": "P.O. Number"
},
"line": line
},
{
"header": {
"po_no": "Another P.O. Number"
},
"line": line
}
];
...
data.filter(item => {
return item.header.po_no === 'P.O. Number' // Evaluates to true
})
当header.po_no
与字符串匹配时,我想返回整个item
。
我不确定如何调试它,因为当返回条件评估为true时,它不会返回任何值。
预期产量:
[{
"header": {
"po_no": "P.O. Number"
},
"line": line
}]
当使用过滤器匹配子属性时,如何返回整个数组索引?
.filter
返回一个新的数组; 它不会修改数组。 因此,如果您期望data
具有该输出,则不会。 但是,这将:
const expectedItems = data.filter(item => {
return item.header.po_no === 'P.O. Number' // Evaluates to true
});
您的代码中有'引用类型。 过滤后的数据保存到变量。
let line = "xyz";
let data = [
{
"header": {
"po_no": "P.O. Number"
},
"line": line
},
{
"header": {
"po_no": "Another P.O. Number"
},
"line": line
}
];
const filtered = data.filter(item => {
return item.header.po_no === 'P.O. Number' // Evaluates to true
})
将Array.filter与箭头功能一起使用将以最简洁的方式解决此问题。 filter
返回主数组和过滤后的项,而find
只会返回匹配的特定项。
let line = "xyz"; let data = [{ "header": { "po_no": "PO Number" }, line }, { "header": { "po_no": "Another PO Number" }, line } ]; let filter = data.filter(d => d.header.po_no === 'PO Number') // return arr let find = data.find(d => d.header.po_no === 'PO Number') // return just the item console.log(filter) console.log(find)
当处理箭头函数并且您有直接收益时,您无需打开函数支架...只需执行以下操作:
data.filter(d => d.header.po_no === 'P.O. Number') // <-- no { return ... }
还要注意,由于您的属性称为line
您可以简单地将对象定义为:
{
"header": { "po_no": "Another P.O. Number" },
line // <-- same prop name as your variable name
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.