为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUH函数 2021-06-30 16:53:15
我正在尝试使用嵌套对象过滤数组,但是在过滤子属性时没有返回父对象。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}]当子属性使用过滤器匹配时,如何返回整个数组索引?
查看完整描述

3 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

.filter返回一个新数组;它不会修改数组。因此,如果您希望data获得该输出,则不会。但是,这将:


const expectedItems = data.filter(item => { 

  return item.header.po_no === 'P.O. Number' // Evaluates to true

});


查看完整回答
反对 回复 2021-07-15
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

您的代码中有 ' 引号类型。过滤后的数据保存到变量中。


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

})


查看完整回答
反对 回复 2021-07-15
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

使用带有箭头函数的Array.filter可以最简洁的方式解决这个问题。filter返回主数组和过滤后的项目,其中find只返回匹配的特定项目。


let line = "xyz";


let data = [{

    "header": { "po_no": "P.O. Number" },

    line

  },

  {

    "header": { "po_no": "Another P.O. Number" },

    line

  }

];


let filter = data.filter(d => d.header.po_no === 'P.O. Number') // return arr

let find = data.find(d => d.header.po_no === 'P.O. 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

  }


查看完整回答
反对 回复 2021-07-15
  • 3 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信