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

基于另一个对象过滤对象属性

基于另一个对象过滤对象属性

茅侃侃 2022-12-22 12:01:20
我有两个对象object_a和object_b。从object_a我只需要ID出现在object_bconst object_a = {    100: "Stack Overflow",    101: "MDN Web Docks",    102: "Javascript"}const object_b = {    0: {        id: 100,        name: "Stack",        lastname: "Overflow"    },    1: {        id: 101,        name: "Web",        lastname: "Docks"    }}   从这些我需要得到所有object a出现id在object bconst desired_object = {    100: "Stack Overflow",    101: "MDN Web Docks"}
查看完整描述

1 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

您可以扩展Object.entries()of object_a,过滤掉(使用Array.prototype.filter())那些在of中看不到的( Array.prototype.some()):Object.values() idobject_b


const a = {100:"Stack Overflow",101:"MDN Web Docks",102:"Javascript"},

      b = {0:{id:100,name:'Stack',lastname:'Overflow',},1:{id:101,name:'Web',lastname:'Docks',}},

    

    result = Object.fromEntries(

      Object

        .entries(a)

        .filter(([key]) => 

          Object

            .values(b)

            .some(({id}) => id == key)

        )

     )

    

console.log(result)

另一种方法(我猜可能工作得更快)可以Array.prototype.reduce()用来遍历并执行相同的检查Object.keys():object_a


const a = {100:"Stack Overflow",101:"MDN Web Docks",102:"Javascript"},

      b = {0:{id:100,name:'Stack',lastname:'Overflow',},1:{id:101,name:'Web',lastname:'Docks',}},

      

      result = Object

        .keys(a)

        .reduce((acc, key) => {

          if(Object.values(b).some(({id}) => id == key))

            acc[key]=a[key]

          return acc

        }, {})

          

console.log(result)          


查看完整回答
反对 回复 2022-12-22
  • 1 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

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