繁体   English   中英

根据另一个 object 过滤 object 属性

[英]Filter object properties based on another object

我有两个对象object_aobject_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"
}

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

 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_a 的object_a Object.keys()并执行相同的检查:

 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM