js数组对象去重根据every()

  • 现在有这样一个数组
let arr = [
	{ a:1, b:1, c:1 },
	{ a:1, b:2, c:1 },
	{ a:1, b:1, c:2 },
	{ a:1, b:1, c:2 },
]
  • 我们现在要去除相同的一项
function deweight(arr){
  let de_arr= []
  arr.forEach(i => {
   let isTrue = de_arr.every((j)=>{
      for (const key in j) {
        return i[key]!==j[key]
      }
    })
    isTrue ? de_arr.push(i) : ''
  });
  return de_arr
}
deweight(arr) 
// [{ a:1, b:1, c:1 },{ a:1, b:2, c:1 },{ a:1, b:1, c:2 },]
  • 或者根据’b’进行去重
function deweight(arr,key){
  let de_arr= []
  arr.forEach(i => {
   let isTrue = de_arr.every((j)=>{
        return i[key]!==j[key]
    })
    isTrue ? de_arr.push(i) : ''
  });
  return de_arr
}
deweight(arr,'id') 
// [{ a:1, b:1, c:1 },{ a:1, b:2, c:1 }]
  • Array.every()的用法
  • every 方法为数组中的每个元素执行一次 callback 函数,直到它找到一个会使 callback 返回 falsy 的元素。如果发现了一个这样的元素,every 方法将会立即返回 false。否则,callback 为每一个元素返回 true,every 就会返回 true。callback 只会为那些已经被赋值的索引调用。不会为那些被删除或从未被赋值的索引调用。 callback 在被调用时可传入三个参数:元素值,元素的索引,原数组。
const isBelowThreshold = (currentValue) => currentValue < 40;

const array1 = [1, 30, 39, 29, 10, 13];

console.log(array1.every(isBelowThreshold));
// expected output: true
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值