如何通过过滤嵌套属性返回父对象

我正在尝试使用嵌套对象过滤数组,但是在过滤子属性时没有返回父对象。


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

})

item当它header.po_no匹配一个字符串时,我想返回整个。


我不确定如何调试它,因为当返回条件评估为真时它不返回任何值。


预期输出:


[{

  "header": {

    "po_no": "P.O. Number"

  },

  "line": line

}]

当子属性使用过滤器匹配时,如何返回整个数组索引?


HUH函数
浏览 216回答 3
3回答

qq_花开花谢_0

.filter返回一个新数组;它不会修改数组。因此,如果您希望data获得该输出,则不会。但是,这将:const expectedItems = data.filter(item => {   return item.header.po_no === 'P.O. Number' // Evaluates to true});

慕无忌1623718

您的代码中有 ' 引号类型。过滤后的数据保存到变量中。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 = [{&nbsp; &nbsp; "header": { "po_no": "P.O. Number" },&nbsp; &nbsp; line&nbsp; },&nbsp; {&nbsp; &nbsp; "header": { "po_no": "Another P.O. Number" },&nbsp; &nbsp; line&nbsp; }];let filter = data.filter(d => d.header.po_no === 'P.O. Number') // return arrlet find = data.find(d => d.header.po_no === 'P.O. Number') // return just the itemconsole.log(filter)console.log(find)当处理箭头函数并且您有直接返回时,您不需要打开函数括号......只需:data.filter(d => d.header.po_no === 'P.O. Number')&nbsp; // <-- no { return ... }另请注意,由于您的属性被调用,line您可以简单地将您的对象定义为:&nbsp; {&nbsp; &nbsp; "header": { "po_no": "Another P.O. Number" },&nbsp; &nbsp; line&nbsp; // <-- same prop name as your variable name&nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript