js--数组对象去重


  • 微信扫码关注公众号 :前端前端大前端,追求更精致的阅读体验 ,一起来学习啊
  • 关注后发送关键资料,免费获取一整套前端系统学习资料和老男孩python系列课程
    在这里插入图片描述

var arr = [
  {
    key: '01',
    value: 'val1'
  },
  {
    key: '01',
    value: 'val1'
  },
  {
    key: '02',
    value: 'val2'
  },
  {
    key: '02',
    value: 'val2'
  },
  {
    key: '02',
    value: 'val2'

  },
  {
    key: '03',
    value: 'val3'
  }
];






// 方法1:按照key去重
function func1(arr = []) {
  var result = [];
  var obj = {};
  for (var i = 0; i < arr.length; i++) {
    if (!obj[arr[i].key]) {
      result.push(arr[i]);
      obj[arr[i].key] = true;
    }
  }
  return result
}

// 方法2:按照key去重 用map+filter改写func1
function func2(arr = []) {
  let map = new Map()
  return arr.filter(item => {
    if (!map.get(item.key)) {
      map.set(item.key, item.key)
      return item;
    }
  })
}

// 方法3:按照value去重 
function func3(arr = []) {
  var result = [];
  var obj = {};
  for (var i = 0; i < arr.length; i++) {
    if (!obj[arr[i].value]) {
      result.push(arr[i]);
      obj[arr[i].value] = true;
    }
  }
  return result
}


// 方法4:按照value去重 用map+filter改写func3
function func4(arr = []) {
  let map = new Map()
  return arr.filter(item => {
    if (!map.get(item.value)) {
      map.set(item.value, item.value)
      return item;
    }
  })

}



// 方法5:使用reduce去重
function func5(arr = []) {
  var obj = {};
  return arr.reduce( (item, next)=> {
    obj[next.key] ? '' : obj[next.key] = true && item.push(next);
    return item;
  }, []);

}



发布了396 篇原创文章 · 获赞 786 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/qq_42813491/article/details/103062751
今日推荐