zoukankan      html  css  js  c++  java
  • 数组去重的几种方式

    第一种:双循环遍历是否存在当前值

        var arr = [1,1,'1',2,2,'2','c','c','d']
        function returnArr () {
          var newArr = [arr[0]]
          arr.forEach((item,index) => {
            var flg = true
            newArr.forEach((item2,index2) => {
              if (item  === item2) {
                flg = false
              }
            })
            // 当在新数组中没有当前值时进行插入
            if (flg) {
              newArr.push(item)
            }
          })
          return newArr
        }
        console.log(returnArr())

    输出结果:[1, "1", 2, "2", "c", "d"]

    这种写法虽然能实现需求,但是相对来说写法比较臃肿

    第二种: 拿到当前值去往后查找是否有相同的,如果有就去掉

        function deleteArray( arr ){
          for( var i = 0; i < arr.length; i++ ){
            for( var j = i+1; j < arr.length; j++ ){
              if( arr[i] === arr[j] ){
                arr.splice(j, 1);
                j--;
              }
            }
          }
          return arr;
        }
        console.log(deleteArray(arr))

    输出结果:[1, "1", 2, "2", "c", "d"]

    第三种:利用indexOf方法

        function uniq(){
          var arr2 = []
          for(var i = 0; i < arr.length; i++){
            if(arr2.indexOf(arr[i]) == -1){
              arr2.push(arr[i])
            }
          }
          return arr2
        }
        console.log(uniq())

    输出结果:[1, "1", 2, "2", "c", "d"]

    第四种: es6一行数组去重

    Array.from(new Set(arr))

    输出结果:[1, "1", 2, "2", "c", "d"]

  • 相关阅读:
    今天不谈技术,谈感情~
    外派金融公司
    OAuth2-简介
    Zookeeper实战-分布式锁
    Zookeeper-基础
    Minio-对象存储
    Redis实战-BloomFilter
    Redis实战-详细配置-优雅的使用Redis注解/RedisTemplate
    Redis-基础
    SpringBoot-表单验证-统一异常处理-自定义验证信息源
  • 原文地址:https://www.cnblogs.com/qiuchuanji/p/12084017.html
Copyright © 2011-2022 走看看