weixin_42705194
wang00ka
2019-09-25 11:05
采纳率: 75.7%
浏览 279

javascript如何实现数组去重复?

数组格式如下,期望的结果是保留后面三笔,因为前面两笔重复了,希望去除重复,谢谢!!!

图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • wojiushiwo945you
    毕小宝 2019-09-25 11:30
    已采纳

    可以定义一个 map,然后遍历一遍数组,如果根据 id 判断是否在 Map 中,完成一遍去重后,再将该 Map 转成数组。参考 demo:

    var result = {};
    for(var i=0;i<array.length;i++){
       var current = array[i];
         //不存在,则存储到 Map 中
         if(result[current.deviceId] == undefined){
             result[current.deviceId] = current;
         }
    }
    
    //在将 Map 转成数组
    var uniqueArray = [];
    var allKeys = Object.getOwnPropertyNames(result);
    for (var i = 0; i < allKeys.length; i++){
       uniqueArray.push(result[allKeys[i]);
    }
    
    点赞 评论
  • caozhy
    如果数据少,不考虑效率,两重循环,和已经添加到结果数组的比较下
    var result = [];
    if (array.length == 0) return;
    result.push(array[0]);
    for (var i = 1; i < array.length; i++)
    {
    var found = false;
    for (var j = 0; j < result.length; j++)
    { if (array[i].deviceId == result[j].deviceId) {found = true; break}; }
    if (!found) result.push(array[i]);
    }
    
    点赞 评论
  • FeiRouBing
    FeiRouBing 2019-09-25 14:14
    let newArr = [];
    array.filter(item =>{if(!newArr.some(ele=>ele.deviceId===item.deviceId)){newArr.push(item)}});
    console.log(newArr)
    
    点赞 评论

相关推荐