js数组去重
博客专区 > caiyezi 的博客 > 博客详情
js数组去重
caiyezi 发表于1年前
js数组去重
  • 发表于 1年前
  • 阅读 0
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

对于如下对象数组

[{id: 0, name: "name1"}, {id: 1, name: "name2"},{id: 1, name: "name2"},{id: 1, name: "name2"}, {id: 2, name: "name3"}, {id: 0, name: "name4"}]

现在想要将id相同的对象的name拼起来,笨的算法如下:

var ids = []; var ret = []; var map = {}; var arr = [{id: 0, name: "name1"}, {id: 1, name: "name2"},{id: 1, name: "name2"},{id: 1, name: "name2"}, {id: 2, name: "name3"}, {id: 0, name: "name4"}];        //循环调用
        for (let i = 0; i < arr.length; i++) { map["" + arr[i].id] = arr[i]; } var mulObj = {}; var mulArr = []; for (var i = 0; i < arr.length; i++) { var obj = arr[i];   //当前对象
            if (ids.indexOf(obj.id) != -1) {          //如果包含,先取出该对象,然后遍历查找重复对象
                mulObj = map["" + obj.id];        //重复的对象+obj已有对象-----合并
 mulArr.push(mulObj); } else { ids.push(obj.id); ret.push(obj); } } for (let i = 0; i < ret.length; i++) { for(let j=0;j<mulArr.length;j++){ if(ret[i].id == mulArr[j].id){      //说明重复
                    ret[i].name += mulArr[j].name; } } } console.log(ret);

对于形如这种字符串或数字数组去重:

[1,2,3,4,2,6,3,2,6,6,8]

简单算法实现如下:

let ret = []; let hash = {}; for (let i = 0; i < arr.length; i++) { let item = arr[i]; let key = typeof(item) + item; if (hash[key] !== 1) { ret.push(item); hash[key] = 1; } } return ret;

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 108
码字总数 0
×
caiyezi
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: