js数组的子集为对象时去重

165 阅读1分钟
  • 数组的子集为对象时
  1. 利⽤对象的键名⽆法重复的特点,可以新建⼀个临时对象来存储原数组中的对象⼦集的值,mail_user_id是唯⼀的ID,然后设置的它为临时对象的键名,值为true即可,保证它的唯⼀性

  2.  通过判断对象的键名是唯⼀时,把对应的数组值添加到⼀个空数组中,最终得到⼀个去重后的数组对象

  3. 此⽅法不会改变数组对象原有的排序

      const arr = this.userAllData
      const result = {}
      const finalResult = []
      for (let i = 0; i < arr.length; i++) {
        // 利⽤对象的键名⽆法重复的特点,mail_user_id是唯⼀区别的属性值
        result[arr[i].mail_user_id] ? '' : result[arr[i].mail_user_id] = true && finalResult.push(arr[i])
      }
      this.userAllData = finalResult
  • 或者利⽤ES5数组⽅法reduce
const arrUnique = function(arr) {
  const ojb = {}
  arr = arr.reduce(
    function(prevArr, currentItem) {
    // 利⽤对象的键名⽆法重复的特点,mch_id是唯⼀区别的属性值
      ojb[currentItem.mail_user_id] ? '' : ojb[currentItem.mail_user_id] = true &&prevArr.push(currentItem)
      return prevArr
     }, [])
  return arr
}