根据另一个对象过滤对象属性

时间:2020-08-05 09:40:07

标签: javascript vue.js

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

1 个答案:

答案 0 :(得分:2)

您可以展开Object.entries()中的object_a,(使用Array.prototype.filter()过滤掉Array.prototype.some() {{1 }},Object.values()

id

另一种方法(我想可能会更快一些)是使用object_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)的{​​{1}}并执行相同的检查:

Array.prototype.reduce()