JS中数组去重的常用方法

数组去重几乎是面试必问题目,如果有笔试,绝对不会少,而且一般会要求写2-3种哦


让我看看谁来看我随笔啦!!

王小咪本咪

一、双重for循环,再用splice方法实现数组去重

var arr = [1, 6, 6, 0, 7, 3, 8, 6, 9,6,6];

            function unique(arr) {

                    for (var i = 0, len = arr.length; i < len; i++) {

                        for (var j = i + 1, len = arr.length; j < len; j++) {

                            if (arr[i] === arr[j]) {

                                arr.splice(j, 1);

                                j--;        // 每删除一个数j的值就减1

                                len--;      // j值减小时len也要相应减1(减少循环次数,节省性能) 

                                // console.log(j,len)

                            }

                        }

                    }

                    return arr;

                }

                console.log(unique(arr));      //  1, 6, 0, 7, 3,8, 9

二、用es6的set方法去重

let arr = [2,6,8,5,2,4,9,2,3];

          function unique(arr) {

                return Array.from(new Set(arr))

          }

          console.log(unique(arr));  // [2,6,8,5,4,9,3]

or6  console.log(...new Set(arr)); // [2,6,8,5,4,9,3]

三、用indexOf方法

var arr =[8,6,8,3,5,,2,8];

                function unique(arr){

                  var arr1 = [];      // 新建一个数组来存放arr中的值

                  for(var i=0,len=arr.length;i

                      if(arr1.indexOf(arr[i]) === -1){

                          arr1.push(arr[i]);

                      }

                  }

                  return arr1;

                }

                console.log(unique(arr));    // 8,6,3,5,2

四、用sort排序去重

var arr = [6,3,1,1,2,8,7,3,1,,2];

                function unique( arr ){

                    arr = arr.sort();

                    console.log(arr);

                    var arr1 = [arr[0]];

                    for(var i=1,len=arr.length;i

                        if(arr[i] !== arr[i-1]){

                            arr1.push(arr[i]);

                        }

                    }

                    return arr1;

                }

                console.log(unique(arr))l;  //  1,,1,1,2,3,3,6,7,8

五、es6中的Map方法去重

    let arr = [6,5,3,8,6,3,6,8,7]

          function unique(arr) {

                let map = new Map();

                let arr1 = []

                    for (let i = 0, len = arr.length; i < len; i++) {

                        if (map.has(arr[i])) {      // 判断是否存在该key值

                            map.set(arr[i], true);

                        }

                        else {

                            map.set(arr[i], false);

                            arr1.push(arr[i]);

                        }

                    }

                    return arr1;

                }

     console.log(unique(arr)); // 6,5,3,8,

就写到这里喽,下次见

你可能感兴趣的:(JS中数组去重的常用方法)