获取不同类型的两个对象的相同部分

时间:2017-07-23 11:54:04

标签: javascript object ecmascript-6

我想找到获得两个对象的相同部分的最佳实践

const firstObject = { a: 1, b: 2, c: 3}
const secondObject = { 1, 2 }
// desired result: { a: 1, b: 2} or simply { a, b }

在我看来,我们需要做三个步骤:

1)获取每个对象的所有值

Object.values = Object.values || (obj => Object.keys(obj).map(key => obj[key]))

2)从两个数组值中找到相同的部分 3)从firstObject

中查找键值对

还有其他方法吗?

最好使用Standard built-in objects作为ArrayObject

2 个答案:

答案 0 :(得分:1)

使用Object#entries(或polyfill)将firstObject分成[key, value]对,并使用Array#reduce组合secondObject中存在的所有内容。



const firstObject = { a: 1, b: 2, c: 3}
const secondObject = { 1: 1, 2: 2 };


const result = Object.entries(firstObject).reduce((obj, [key, value]) => {
  value in secondObject && (obj[key] = value);
  
  return obj;
}, {})

console.log(result);




答案 1 :(得分:0)

Object.keys(firstObject).filter(key=> key in secondObject).reduce((o,k)=>(o[k]=firstObject[k],o),{});