[英]Compare two arrays of objects excluding a property using lodash
我可以使用_.differenceWith来获得两个 arrays 对象之间的区别,如下所示:
_.differenceWith(arr1, arr2, _.isEqual)
假设我有arr1
和arr2
为:
let arr1= [
{
id:1,
val1:{
pre:1,
foo:2
}
}
]
let arr2= [
{
id:3,
val1:{
pre:1,
foo:2
}
},
]
id
不同,但val1
属性相同。
所以,我想比较不包括id
的 arrays 。
如何使用 lodash 或简单的 JS 来实现这一点?
使用_.differenceWith()
比较器 function 比较对象的val1
属性:
const arr1 = [{"id":1,"val1":{"pre":1,"foo":2}}] const arr2 = [{"id":3,"val1":{"pre":1,"foo":2}}] const result = _.differenceWith(arr1, arr2, (a, b) => _.isEqual(a.val1, b.val1)) console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>
在执行 isEqual.. 时,您可以使用_.omit
省略 id in。
例如。
let arr1= [ {id:1, val1:{ pre:1, foo:2 }}, {id: 4, val1: { pre: 3, addThis: 'just to check' }} ]; let arr2= [{ id:3, val1:{ pre:1, foo:2 }}]; console.log(_.differenceWith(arr1, arr2, (a, b) => { return _.isEqual( _.omit(a, ['id']), _.omit(b, ['id']) ) }));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.