JavaScript数组去重的总结

JavaScript数组去重要领的总结

媒介

在JavaScript中数组是比较经常使用的,本文中总结了下数组去重的几种经常使用要领,若有题目,请斧正。

简朴粗犷的一种,ES6中set要领:

var arr = [1,2,2,3,3,4,5,5];
console.log([...new Set(arr)])  //[1, 2, 3, 4, 5]

遍历数组,建立新数组,应用
indexOf()推断是不是存在于新数组中,不存在则push到新数组,末了返回新数组:

function removeSame(arr){
    var ret = [];
    for(var i=0,j=arr.length;i<j; i++){
        if(ret.indexOf(arr[i]) === -1){
            ret.push(arr[i])
        }
    }
    return ret;
}
var arr1 = [1,2,2,2,3,3,4,4,5,5];
console.log(removeSame(arr1))  //[1, 2, 3, 4, 5]

遍历数组,应用
object对象保存数组值,推断数组值是不是已保存在object中,未保存则push到新数组并用object[arrayItem]=1的体式格局纪录保存:

function removeSame(arr){
    var temp = {},ret = [];
    for (var i = 0,j=arr.length;i<j;i++){
        debugger;
        if(!temp[arr[i]]){
            temp[arr[i]] = 1;
            ret.push(arr[i])
        }
    }
    return ret;
}
var arr2 = [1,2,2,2,3,3,4,4,5];
console.log(removeSame(arr2))   //[1, 2, 3, 4, 5]

依据数组下标推断法, 遍历数组,应用indexOf()推断元素的值是不是与当前索引相称,如相称则到场

function removeSame(arr){
    var ret = [];
    arr.forEach(function(ele,index){
        if(arr.indexOf(ele) === index){
            ret.push(ele)
        }
    })
    return ret;
}
var arr3 = ["apple","apple","orange","orange","banana"]
console.log(removeSame(arr3))    //["apple", "orange", "banana"]

数组先举行排序,然后比较原数组与新数组,一头一尾举行去重:

function deleteSame(arr){
    var ret = [],end;
    debugger;
    arr.sort();   // ["apple","apple","banana","orange","orange",];
    end = arr[0];
    ret.push(arr[0]);
    for(var i = 1; i<arr.length; i++){
        if(arr[i] != end){
            ret.push(arr[i]);
            end = arr[i];
        }
    }
    return ret;
}
var arr4 = ["apple","apple","orange","orange","banana"];
console.log(deleteSame(arr4)) //["apple", "banana", "orange"]

应用filter()要领轮回对数组中的元素挪用callback函数, 假如返回true 保存,假如返回false 过滤掉, 返回新数组,老数组稳定

var arr_unique = ["apple","apple","orange","orange","banana"].filter(function(element,index,array){
    return array.indexOf(element) === index;
})
console.log(arr_unique) //["apple", "orange", "banana"]

简朴的总结了6种要领,若有不足请斧正,能够继承补充,人人配合进修。

    原文作者:sunshine1213
    原文地址: https://segmentfault.com/a/1190000013227774
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞