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

根据另一个数组中的值过滤数组

根据另一个数组中的值过滤数组

斯蒂芬大帝 2021-08-26 16:19:36
我有一个由对象组成的数组。每个对象都有名称和一个 items 数组。我想根据 id 过滤。const list = [ {name: "Bob",  items: [   {id: 1, color:"blue"},{id: 2, color:"green"}  ] }, {name: "Kate",  items: [   {id: 3, color:"yellow"},{id: 4, color:"pink"}  ] },  {name: "Fred",  items: [   {id: 5, color:"purple"}  ] }]如果 id===1,我希望它返回该数组的名称和项目。类似的东西list.filter(listItems => listItems.items.filter(item => item.id === 1))应该返回name: "Bob",  items: [   {id: 1, color:"blue"},{id: 2, color:"green"}  ]
查看完整描述

3 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

如果我理解你的问题,你可以创建一个函数,用于Array.prototype.find返回回调函数返回的数组中的第一个元素true- 在这种情况下,回调可以包含一个 for 循环,当它能够匹配id你时返回 true可以作为函数的另一个参数传入。例如:


const list = [{

    name: "Bob",

    items: [{

      id: 1,

      color: "blue"

    }, {

      id: 2,

      color: "green"

    }]

  },

  {

    name: "Kate",

    items: [{

      id: 3,

      color: "yellow"

    }, {

      id: 4,

      color: "pink"

    }]

  },

  {

    name: "Fred",

    items: [{

      id: 5,

      color: "purple"

    }]

  }

];


const filterList = (arr, id) => {

  return arr.find(el => {

    for (let i = 0; i < el.items.length; i += 1) {

      if (el.items[i].id === id) {

        return true;

      }

    }

  })

};


console.log(filterList(list, 3))


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

添加回答

举报

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