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

如何在 Javascript 中过滤嵌套对象

如何在 Javascript 中过滤嵌套对象

九州编程 2022-06-16 16:32:01
我将如何在嵌套项目上使用 filter() ?我正在尝试检索具有 projex.HeightPay === '1' 的所有数据。如果 HeightPay 为 1,我想取回 Id、Name、System 等和项目项目。例如:  const fakeData = [  {    Id: "022173333101",    Name: "Blue",    System: "DESIGN",    Squares: 0,    Attributes: {      projex: [        {          Project: "50",          HeightPay: "1"        },        {          Project: "50",          HeightPay: "0"        }      ]    },    Customer: {      Addr1: "Somewhere",      Addr2: ""    }  }];// returns nothingconst found = fakeData.filter(data => data.Attributes.projex.HeightPay === "1");期望的输出:  {    Id: "022173333101",    Name: "Blue",    System: "DESIGN",    Squares: 0,    Attributes: {      projex: [        {          Project: "50",          HeightPay: "1"        }      ]    },    Customer: {      Addr1: "Somewhere",      Addr2: ""    }  }
查看完整描述

2 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

您可以使用Array.prototype.map遍历数组的每个元素,然后使用fakeData过滤子数组并从每次迭代的调用中返回一个新对象Attributes.projexArray.prototype.filtermap


调用中的新对象Array.prototype.map是通过使用对象扩展运算符获取每个元素的所有属性(属性除外) ,然后将新数组从分配给每个新对象:fakeData...Attributes.projexAttributes.projexArray.prototype.filter


const fakeData = [ { Id: "022173333101", Name: "Blue", System: "DESIGN", Squares: 0, Attributes: { projex: [ { Project: "50", HeightPay: "1" }, { Project: "50", HeightPay: "0" } ] }, Customer: { Addr1: "Somewhere", Addr2: "" } } ];


const found = fakeData.map(data => ({

  ...data,

  Attributes: {

    projex: data.Attributes.projex.filter(({

      HeightPay

    }) => HeightPay === "1")

  }

}));

console.log(found);


查看完整回答
反对 回复 2022-06-16
?
鸿蒙传说

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

const result = fakeData.map(item => ({

        ...item,

        Attributes: {

                projex: item.Attributes.projex.filter(e => e.HeightPay === "1")

        }

}))


查看完整回答
反对 回复 2022-06-16
  • 2 回答
  • 0 关注
  • 257 浏览
慕课专栏
更多

添加回答

举报

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