js对象数组去重

方法一:

采用对象访问属性的方法,判断属性值是否存在,如果不存在就添加。

var arr = [{
      key: '01',
      value: '乐乐'
   }, {
      key: '02',
      value: '博博'
   }, {
      key: '03',
      value: '淘淘'
   },{
      key: '04',
      value: '哈哈'
   },{
      key: '01',
      value: '乐乐'
   }];


   //  方法1:利用对象访问属性的方法,判断对象中是否存在key
   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;
      }
   }
   console.log(result); // [{key: "01", value: "乐乐"},{key: "02", value: "博博"},{key: "03", value: "淘淘"},{key: "04", value: "哈哈"}]

方法二:

采用数组中的reduce方法,遍历数组,也是通过对象访问属性的方法。

  //  方法2:利用reduce方法遍历数组,reduce第一个参数是遍历需要执行的函数,第二个参数是item的初始值
      var obj = {};
    arr = arr.reduce(function(item, next) {
      obj[next.key] ? '' : obj[next.key] = true && item.push(next);
      return item;
   }, []);
   console.log(arr); // [{key: "01", value: "乐乐"},{key: "02", value: "博博"},{key: "03", value: "淘淘"},{key: "04", value: "哈哈"}]

参考链接: https://www.cnblogs.com/le220/p/9130656.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 序列比对(14)viterbi算法和后验解码的比较

    前文《序列比对(十)viterbi算法求解最可能路径》介绍了用viterbi算法求解最可能路径:在符号序列已知而状态序列未知时,最可能路径是:

    一只羊
  • 序列比对(11)计算符号序列的全概率

    如果一个符号序列中每个符号所对应的状态是已知的,那么这个符号序列出现的概率是容易计算的:

    一只羊
  • 序列比对(15)EM算法以及Baum-Welch算法的推导

    微信公众号目前不支持Latex风格的数学公式,所以暂时以截图的方式展示内容。本文第一部分EM算法推导过程的markdown代码如下:

    一只羊
  • 【趣学程序】Java中的数组

    趣学程序
  • 操作的原子性与线程安全

    本案例来源于java zone社区,由于源代码里面存在一些自己开发的注解,我暂时没找到相关的文档,所以我做了一些修改。用的都是java SDK的API。

    八音弦
  • 【趣学程序】Linux基础命令

    常用:/home /etc /mnt /root /opt /tmp /usr /var

    趣学程序
  • 【趣学程序】java基础知识(二)

    趣学程序
  • 【趣学程序】java中的方法

    趣学程序
  • 【趣学程序】java基础知识(一)

    可以简单的理解为Java程序为了加强阅读行自定义的名称,如类名、方法名、变量名。仅仅是个名字而已。对于这样一个名字不像我们人类一样可以随意起名,程序有一定的命名...

    趣学程序
  • 序列比对(12):计算后验概率

    前文《序列比对(11)计算符号序列的全概率》介绍了如何使用前向算法和后向算法计算符号序列的全概率。但是很多情况下我们也想了解在整条符号序列已知的情况下,某一位置...

    一只羊

扫码关注云+社区

领取腾讯云代金券