javascript - 基于属性的两个数组之间的不同对象 - lodash

标签 javascript angularjs lodash

是否有一种直接方法可以从两个不同的数组中根据对象的属性将不同的对象放入一个新数组

当前循环遍历第一个数组,然后与第二个数组中的每个对象进行比较以维护一个计数器并在不同时插入新数组。

   var newArray = [];
   _.each(firstArray, function(item) {               //loop items in 1st []
      var count = 0;        
     _.each(secondArray, function(secondItem) {
       if(secondItem.property = item.property) {      
        count++
       }
     }  
  if(count == 0)   newArray.push(item); //push distinct item into new []
  }

示例数据:

var array1 = [{id:1, busNum: "1234"}, {id:2, busNum:"4567"}]
var array2 = [{id:1, busNum: "2344"}, {id:2, busNum:"1234"}]

想要消除公共(public)巴士(具有相同巴士编号的)

  var newArray = [{id:2, bus:"4567"}, {id:1, bus:"2344"]

最佳答案

您可以使用 _.xorBy 作为 symmetric difference

var array1 = [{id:1, busNum: "1234"}, {id:2, busNum:"4567"}],
    array2 = [{id:1, busNum: "2344"}, {id:2, busNum:"1234"}],
    result = _.xorBy(array1, array2, 'busNum');

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>

关于javascript - 基于属性的两个数组之间的不同对象 - lodash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43285799/

相关文章:

javascript - polymer 重复模板双向数据绑定(bind)

javascript - 无论浏览器窗口大小如何,如何使图像始终与另一图像对齐?

javascript - 如何使 HTML 父元素的边界框适合 CSS 转换后的子元素?

javascript - 通过 PHP 流式传输时,Safari 中的音频持续时间总是返回无穷大

angularjs - AngularJS 的 Spring 安全性 - 注销时出现 404

javascript - AngularJS 中 C3.js 中的两种方式数据绑定(bind)

javascript - AngularJS - 如何刷新cacheFactory中的数据

javascript - 请求 promise 实现返回 `null`

javascript - 使用 _.sortByOrder lodash 按数字字符串排序

underscore.js - Bower 覆盖依赖