angular 求两个数组的差集

假如有两个数组,怎样把两个数组的差集push进$scope.dataIndex这个数组啊

如果不引入其他第三方库的情况下,如何用js 得到差集呢

  let tempData = [5, 6, 8];
  let tempArr = [5, 6, 7, 8];
  $scope.dataIndex = [];
      angular.forEach(tempData, function(item, index) {
          //if (tempArr.indexOf(item.Id) !== -1) {
              // $scope.dataIndex.push(item.Id);
                 //   console.log(item);
              // }
         });
阅读 3.2k
3 个回答

这是我项目里自己写的 因为有特殊需求要支持对象的差集 那段没贴出来

diffArray = (arr1, arr2) => {
    for (let i = arr1.length - 1; i >= 0; i--) {
        const a = arr1[i];
        for (var j = arr2.length - 1; j >= 0; j--) {
            let b = arr2[j];
            if (a == b) {
                arr1.splice(i, 1);
                break;
            }
        }
    }
    return arr1;
}

如果支持es6可以用这段

Array.prototype.diff = function(arr) {
    return this.filter(function(i) {return arr.indexOf(i) < 0;});
};

underscore库有_.difference

没用过angular

let diff = [...new Set([...new Set(tempData )].filter(x => !new Set(tempArr).has(x)))]

数组取差

引入Underscore.js

_.difference([5,6,7,8],[5,6,8])
// 注意是[5,6,7,8]在前,[5,6,8]在前返回空数组

结果是[7]

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题