gpt4 book ai didi

javascript - 如何在javascript中找到两个不不同数组的差异?我使用了下划线,但我对普通 JS 持开放态度

转载 作者:行者123 更新时间:2023-11-28 04:50:05 25 4
gpt4 key购买 nike

如果我有两个数组,例如

array1 = [{id: 'id1'}, {id:'id2'}, {id:'id3'}, {id:'id3'}]
array2 = [{id: 'id1'}, {id:'id2'}, {id:'id3'}]

预期结果应为[{id:'id3'}]

我的方法非常适合不同的数组。

idsFrom1 = _.pluck(array1, 'id');
idsFrom2 = _.pluck(array2, 'id');
var diff = _.difference(_.union(idsFrom1, idsFrom2), _.intersection(idsFrom1, idsFrom2))

最佳答案

我认为你的问题是你必须使用某种机制来计算已删除的元素,例如_.countBy:

var first = [{
id: 'id1'
}, {
id: 'id2'
}, {
id: 'id3'
}, {
id: 'id3'
}]
var second = [{
id: 'id1'
}, {
id: 'id2'
}, {
id: 'id3'
}]

function unwrap (o) {
return o[this]
}

function wrap (k) {
return _.object([k], [String(this)])
}

function counted(array) {
return _.countBy(array, unwrap, 'id')
}

function constant() {
return String(this)
}


function difference(first, second) {
return _.flatten(_.values(_.mapObject(counted(first), function(v, k) {
return _.range(0, v - this[k]).map(constant, k)
}, counted(second)))).map(wrap, 'id')
}

console.log(difference(first, second))
<script src="http://underscorejs.org/underscore-min.js"></script>

关于javascript - 如何在javascript中找到两个不不同数组的差异?我使用了下划线,但我对普通 JS 持开放态度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42990636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com