• 技术文章 >web前端 >js教程

    js数组去重的方法有哪些?js数组去重五种方法总结(附代码)

    不言不言2018-08-13 10:55:43原创2888
    js数组去重方法有很多,下面的文章将给大家介绍五种js数组去除重复数据的方法,有一定的参考价值,希望对大家有所帮助。

    js实现数组去重的方法一:运用splice()方法和双层for循环(有点类似选择排序)

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

    注意:不加 j-- 则会删除后,跳过一个数字 注意:不加 j-- 则会删除后,跳过一个数字

    js实现数组去重的方法一第二种写法(双层for循环): 效率低,会增加大量无用的循环比较

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

    js实现数组去重的方法二:用ES5新增的indexOf()和push()方法 (非常简便好理解)

       function norepeat(arr){
                  var newarr = [];
                  for(var i in arr){
                      if(newarr.indexOf(arr[i]) == -1){
                          newarr.push(arr[i]);
                      }
                  }
                  return newarr;
               }

    js实现数组去重的方法三:先利用sort排序再比较相邻的是否相等,相等则删除

       function norepeat(arr) {
                arr.sort(function (a, b) { return a - b; });
                for (var i = 0; i < arr.length; i++) {
                    if (arr[i] == arr[i + 1]) {
                        arr.splice(i, 1);
                        i--;
                    }
                }
                return arr;
            }

    注意:不加 i-- 则会删除后,跳过一个数字

    js实现数组去重的方法四:利用数组下标不能重复,先将参数里的值转化成一个数组的下标,再将下标重新转化成值(非常棒的思路)

      function norepeat(arr){
                var newArr = [];
                var arrs = [];
                for(var i=0;i<arr.length;i++){
                    var a = arr[i];
                    newArr[a] = 1;
                }
                for(var i in newArr){
                    arrs[arrs.length] = i;
                    console.log(i);
                }
            }

    js实现数组去重的方法五也可以实现

      var arr = [6, 1, 1, 2, 1, 2, 1, 1, 3, 1, 1, 1, 4, 15];
            function norepeat(arr) {
                var arrcopy = [];
                for (var i = 0; i < arr.length; i++) {
                    var count = 0;
                    for (var j in arrcopy) {
                        if (arrcopy[j] != arr[i]) {
                            count++;
                        }
                    }
                    console.log(arrcopy);
                    if (count == arrcopy.length) {
                        arrcopy[arrcopy.length] = arr[i];
                    }
                }
                return arrcopy;
            }

    相关推荐:

    JS模块化的实现方法有哪些?js模块化的讲解

    js实现数组去重的方法有哪些?js数组去重方法的简单介绍

    以上就是js数组去重的方法有哪些?js数组去重五种方法总结(附代码)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:js数组去重
    上一篇:jquery中图片无序预加载的实现以及使用方法 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 聊聊Node中怎么用async函数• 浅析Angular中怎么结合使用FormArray和模态框• react 怎么实现按需加载• react怎么实现滚动条• 一文聊聊node文件的读写操作
    1/1

    PHP中文网