vue 数组对象去重

方法一:使用 .filter() 和 .findIndex() 相结合的方法

const arr = [{id: 1, name: "a"}, {id: 2, name: "b"},
             {id: 1, name: "c"}, {id: 3, name: "d"}];
const uniqueArr = arr.filter((item, index) =>
     arr.findIndex(i => i.id === item.id) === index);

console.log(uniqueArr);


方法二:使用 .reduce() 方法 

  const arr = [{id: 1, name: "a"}, {id: 2, name: "b"},
                 {id: 1, name: "c"}, {id: 3, name: "d"}];
    const uniqueArr = arr.reduce((acc, curr) => {
      if (!acc.find(item => item.id === curr.id)) {
        acc.push(curr);
      }
      return acc;
    }, []);
console.log(uniqueArr);


 方法三:使用 .forEach() 和 .some() 相结合的方法

  const arr = [{id: 1, name: "a"}, {id: 2, name: "b"},
                 {id: 1, name: "c"}, {id: 3, name: "d"}];
    const uniqueArr = [];
    arr.forEach(item => {
      if (!uniqueArr.some(i => i.id === item.id)) {
        uniqueArr.push(item);
      }
    });
console.log(uniqueArr);


方法四:使用 Map

const arr = [{id: 1, name: "a"}, {id: 2, name: "b"},
               {id: 1, name: "c"}, {id: 3, name: "d"}];
  const uniqueArr = [...new Map(arr.map(item => [item.id, item])).values()];

console.log(uniqueArr);


 方法五:使用every去重,如果新数组里没有aa里面相同的数据,那么就push

 const arr = [{id: 1, name: "a"}, {id: 2, name: "b"},
               {id: 1, name: "c"}, {id: 3, name: "d"}];
   var newArr = [];
   arr.forEach(function (a) {
              var check = newArr.every(function (b) {
                  return a.zerendepartment !== b.zerendepartment;
              })
              check ? newArr.push(a) : '' //去重后push
          })
  console.log(newArr ,'newArr ');

方法六 

  this.phoneList = this.unique(this.phoneList,'id')

  unique(arr, key) {
      const res = new Map();
      return arr.filter((arr) => !res.has(arr[key]) && res.set(arr[key], 1));
    },    

其中以id作为检验数据的唯一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值