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

我有两个对象object_a和object_b。从object_a我只需要ID出现在object_b


const 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 b


const desired_object = {

    100: "Stack Overflow",

    101: "MDN Web Docks"

}


茅侃侃
浏览 96回答 1
1回答

繁星淼淼

您可以扩展Object.entries()of object_a,过滤掉(使用Array.prototype.filter())那些在of中看不到的( Array.prototype.some()):Object.values() idobject_bconst 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_aconst 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)          
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript