美文网首页
数组去重方法+

数组去重方法+

作者: w_zhuan | 来源:发表于2020-06-24 16:15 被阅读0次

    1 利用ES6 Set去重(ES6中最常用) 如果不考虑兼容性,这种去重的方法代码最少。这种方法还无法去掉“{}”空对象,后面的高阶方法会添加去掉重复“{}”的方法。

    function unique(arr){

      return Array.from(new Set(arr))

    }

    var arr = [1,2,2,null,undefined,true,false,true,4,7,48,80,{},{}]

    2. 利用hasOwnProperty 判断是否存在对象属性

    function unique(arr) {

    var obj = {};

    return arr.filter(function(item , index, arr){

    return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true )

    })

    }

    3. 双重for循环 利用for嵌套for,然后splice去重(ES5中最常用)

    function unique(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;

    }

    4.利用indexOf去重 新建一个空的结果数组,for 循环原数组,判断结果数组是否存在当前元素,如果有相同的值则跳过,不相同则push进数组。

    function unique(arr) {

    if (!Array.isArray(arr)) {

    console.log("type error");

    return

    }

    var array = [];

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

    console.log(array.indexOf(arr[i]))

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

    array.push(arr[i]);

    }

    }

    return array;

    }

    5. 利用sort()排序方法,然后根据排序后的结果进行遍历及相邻元素比对

    function unique(arr) {

    if (!Array.isArray(arr)) {

    console.log("type error");

    return

    }

                arr = arr.sort();

    var array = [arr[0]];

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

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

    array.push(arr[i])

    }

    }

    return array;

    }

    6.利用对象的属性不能相同的特点进行去重

    function unique(arr) {

    if (!Array.isArray(arr)) {

    console.log("type error");

    return

    }

    var array = [];

    var obj = {};

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

    if(!obj[arr[i]]){

    array.push(arr[i]);

    obj[arr[i]] =1 ;

    }else{

    obj[arr[i]] ++

    }

    }

    return array;

    }

    var arr = [1, 2, 2, null, undefined, true, false, true, 4, 7, 48, 80, NaN, NaN, "jj", "jj", {}, {}]

    console.log(unique(arr))

    相关文章

      网友评论

          本文标题:数组去重方法+

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