Javascript 如何使用lodash查看对象和数组之间是否存在交集?
假设我有2个json对象,我想看看是否存在基于ID的匹配/交集。以下是两个对象:Javascript 如何使用lodash查看对象和数组之间是否存在交集?,javascript,lodash,Javascript,Lodash,假设我有2个json对象,我想看看是否存在基于ID的匹配/交集。以下是两个对象: obj= { "container_copy": { "card1": { "id": "300", "copy": "hello" }, "card2": { "id": "1000", "type": "card" }, "text":
obj= {
"container_copy": {
"card1": {
"id": "300",
"copy": "hello"
},
"card2": {
"id": "1000",
"type": "card"
},
"text": "bla"
}
}
及
我试过这个:
let o1 = _.keyBy(_.values(obj), 'id');
let o2 = _.keyBy(items, 'id');
let inter = _.intersection(_.keys(o1), _.keys(o2));
let result = _.chain(o1)
.pick(inter)
.merge(_.pick(o2, inter))
.value();
我做错了什么?
.values
返回一个数组,因此在将值赋给o1
时需要取第一个元素:.keyBy(.values(obj)[0],'id')
您对示例的预期结果是什么?我不完全理解你所说的“基于ID的匹配/交集”是什么意思。。。
let o1 = _.keyBy(_.values(obj), 'id');
let o2 = _.keyBy(items, 'id');
let inter = _.intersection(_.keys(o1), _.keys(o2));
let result = _.chain(o1)
.pick(inter)
.merge(_.pick(o2, inter))
.value();