javascript数组查重方法总结

文章参考地址:http://blog.csdn.net/chengxuyuan20100425/article/details/8497277


题目

对下列数组去重:
var arr = ['aa','bb','cc','',1,0,'1',1,'bb',null,undefine,null];
要求考虑兼容性和效率

方法一
function unique(arr){
    var result = [];
    for (var i = 0;i

总结:两个问题:1.加上indexOf()相当于加载两次循环
2.indexOf()在ie9以下不兼容

方法二
function unique(arr){
    var result = [];
    var hash = {};
    for ( var i=0;i

通过hash表,把已经出现过的元素通过下标的形式存入一个object内。下标的引用比indexOf搜索数组快的多。

方法三
function unique(arr){
    var n = [this[0]];   //结果数组
    for(var i =1;i
方法四
function unique(arr){
    this.sort();
    var re = [this[0]];
    for (var i =1;i

先把数组排序,然后比较相邻的两个值。

方法五
//去重(ES6 Set)
function unique2(array){
return Array.from(new Set(array));
}
var arr = ['aa','bb','cc','',1,0,'1',1,'bb',null,undefine,null];
console.log(unique(arr));

ES6 新方法 form,所以兼容性有问题。

转载于:https://www.cnblogs.com/qjqcs/p/5973918.html

你可能感兴趣的:(javascript数组查重方法总结)