【发布时间】:2018-12-10 17:08:32
【问题描述】:
我需要迭代三个对象以检查重复项以最终得到一个对象。如果有重复项,我想将它们放入一个数组中,以便用户可以选择最佳值,以便它们最终都以字符串或整数(或带有字符串/整数的对象)的形式结束。它们可能看起来像这样:
const a = {
first_name: 'Tom',
height: {
feet: 5,
inches: 0
}
}
const b = {
first_name: 'Thomas',
last_name: 'Walsh',
email: 'tomwalsh@domain.com',
height: {
feet: 6,
inches: 0
}
}
const c = {
email: 'tomwalsh@sample.edu'
}
结果如下所示:
const result = {
first_name: ['Tom', 'Thomas'],
last_name: 'Walsh',
email: ['tomwalsh@domain.com', 'tomwalsh@sample.edu'],
height: {
feet: [5, 6],
inches: 0
}
}
我不知道 a、b 或 c 是否是密钥的权威,所以我必须假设一组未知的键/值对,但它肯定很小(不超过 20 对,只有 2-3 的深度会超过 3 级,并且每个级别最多有 4-5 个键/值对。
我可以创建一个新对象,递归地迭代这三个对象中的每一个,然后转储值或创建一个值数组,但这似乎效率低下。有什么建议吗?
如果需要,我在项目中有 lodash。谢谢!
【问题讨论】:
标签: javascript ecmascript-6 lodash