美文网首页
【盘一盘】009 js快速行之有效的去重数据操作

【盘一盘】009 js快速行之有效的去重数据操作

作者: 大白0928 | 来源:发表于2019-11-01 16:48 被阅读0次

    很多时候,我们需要去除对象当中的重复的数据,但网络上处理重复数据的方法多是通过indexOf( )来除去,但有时,我们只是因为有某个属性相同而需要去重。

    案例

    dataInfo = [
      { name: "入口",value: [100, 20],img: "") },
      { name: "展厅", value: [90, 60], img: "") },
      { name: "演示厅", value: [55, 60], img: "./../logo.png") },
      { name: "教室", value: [20, 70], img: "") },
      { name: "演示厅", value: [85, 90], img: "./img.png") }
    ]
    

    代码

    如上,我需要清除的数据是重复的name数据“演示厅”。如果使用indexOf永远得到的数据值是-1
    所以,我调整了一些思路,如下源码:

    /**
         * js快速行之有效的去重数据操作
         * @param  {object} array 数组对象
         * @param  {string} name 去重的判断对象
         * @return {string} n 返回数组
         */
        uniqueArr(array, name){
          let bb = JSON.stringify(array);
          var n = JSON.parse(bb); // 一个新的临时数组
          // 遍历当前数组
          for (let i=0, len=n.length; i<len; i++) {
            for (let j=i+1; j<len; j++) {
              if (n[i][name] == n[j][name]) {
                n.splice(j, 1);
                // splice 会改变数组长度,所以要将数组长度 len 和下标 j 减一
                len--;
                j--;
              }
            }
          }
          return n;
        }
    

    接收返回这个函数即可。
    当然,去重的方法有很多种,需要根据具体业务来操作。

    如果这种方法无法解决你的问题,推荐阅读:

    JavaScript数组去重(12种方法,史上最全)

    相关文章

      网友评论

          本文标题:【盘一盘】009 js快速行之有效的去重数据操作

          本文链接:https://www.haomeiwen.com/subject/ainbvctx.html