1.求交集
    var arr1 = [{name:'name1',id:1},{name:'name2',id:2},{name:'name3',id:3}];
      var arr1Id = [1,2,3]
      var arr2 = [{name:'name1',id:1},{name:'name2',id:2},{name:'name3',id:3},{name:'name4',id:4},{name:'name5',id:5}];
      var result = arr2.filter(function(v){
            return arr1Id.indexOf(v.id)!==-1 // 利用filter方法来遍历是否有相同的元素
        })
      console.log(result);
      2.求并集
    let arr1 = [{name:'name1',id:1},{name:'name2',id:2},{name:'name3',id:3}];
      let arr2 = [{name:'name1',id:1},{name:'name4',id:4},{name:'name5',id:5}];
      let arr3 = arr1.concat(arr2);
      let result = [];
      var obj = [];
      result = arr3.reduce(function(prev, cur, index, arr) {
        console.log(prev, cur);
        obj[cur.id] ? '' : obj[cur.id] = true && prev.push(cur);
        return prev;
      }, []);
      console.log(result);
    3.求差集
    let arr1 = [{name:'name1',id:1},{name:'name2',id:2},{name:'name3',id:3}];
      let arr1Id = [1,2,3];
      let arr2 = [{name:'name1',id:1},{name:'name4',id:4},{name:'name5',id:5}];
      let arr2Id = [1,4,5];
      let arr3 = arr1.concat(arr2);
      let result = arr3.filter(function(v){
          return arr1Id.indexOf(v.id)===-1 || (arr2Id.indexOf(v.id)===-1)
      })
      console.log(result);
      4.去重
    let arr = [{name:'name1',id:1},{name:'name2',id:2},{name:'name3',id:3},{name:'name1',id:1},{name:'name4',id:4},{name:'name5',id:5}];
      var obj = [];
      let result = arr.reduce(function(prev, cur, index, arr) {
        console.log(prev, cur);
        obj[cur.id] ? '' : obj[cur.id] = true && prev.push(cur);
        return prev;
      }, []);
5.多维转一维
var arr = [1,[2,[[3,4],5],6]];
function unid(arr){
        var arr1 = (arr + '').split(',');//将数组转字符串后再以逗号分隔转为数组
        var arr2 = arr1.map(function(x){
            return Number(x);
        });
        return arr2;
}
console.log(unid(arr));

 

posted on 2022-04-12 08:58  James__xu  阅读(173)  评论(0编辑  收藏  举报