繁体   English   中英

比较两个 arrays 对象,不包括使用 lodash 的属性

[英]Compare two arrays of objects excluding a property using lodash

我可以使用_.differenceWith来获得两个 arrays 对象之间的区别,如下所示:

_.differenceWith(arr1, arr2, _.isEqual)

假设我有arr1arr2为:

    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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM