陣列去重的三種方法

2021-08-03 06:53:38 字數 1488 閱讀 5048

方法一:常規方法

思路:1.構建乙個新的陣列存放結果

2.for迴圈中每次從原陣列中取出乙個元素,用這個元素迴圈與結果陣列對比

3.若結果陣列中沒有該元素,則存到結果陣列中

/*

*物件導向,是乙個方法

*/array.prototype.unique1 = function

() }

if(!repeat)

}return res;

}var arr = [1, 10, 5, 121, 1, 50, 30, 30, 5];

alert(arr.unique1());//輸出結果:[1, 5, 10, 30, 50, 121]

方法二:排序方法;效率略高第一種方法,注意排序問題

思路:1.先將原陣列進行排序

2.檢查原陣列中的第i個元素 與 結果陣列中的最後乙個元素是否相同,因為已經排序,所以重複元素會在相鄰位置

3.如果不相同,則將該元素存入結果陣列中;

/*

* 面向過程,普通寫法;

*//*var arr=[1,10,5,121,1,50,30,30,5];

arr.sort(function(a,b));

var arr1=;

console.log(arr)

for (var i=0;i/*

* 物件導向的方法

*/array.prototype.unique2 = function

()); //先排序(注意,含有字元的陣列排序根據實際情況排序)

var res = [this[0]];

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

}return res;

}var arr = [1,10,5,121,1,50,30,30,5];

console.log(arr.unique2());//輸出結果:[1, 5, 10, 30, 50, 121]

1.建立乙個新的陣列存放結果

2.建立乙個空物件

3.for迴圈時,每次取出乙個元素與物件進行對比,如果這個元素不重複,則把它存放到結果陣列中,同時把這個元素的內容作為物件的乙個屬性,並賦值為1,存入到第2步建立的物件中。

說明:至於如何對比,就是每次從原陣列中取出乙個元素,然後到物件中去訪問這個屬性,如果能訪問到值,則說明重複。

array.prototype.unique3 = function();

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

}return res;

}var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];

alert(arr.unique3());//輸出結果為:[112, 34, "你好", "str", "str1"]

陣列去重的三種方法

var arr1 建立臨時陣列 var obj 建立空物件 for var i 0 i arr.length i return arr1 var arr 1,1,1,1,2,3,5,6,6,6 console.log unique arr var arr1 for var i 0 i arr.len...

js陣列去重的三種方法

1.利用陣列操作方法splice實現陣列去重 var arr 1 2,2 3,3 3,4 4,5 6,6 7,7 7,8 8,9 function newarr arr return arr console.log newarr arr 返回結果 1 2,3 4,5 6,7 8,9 2.利用inde...

js陣列去重的三種方法

此方法是比較常用的方法之一,也是es5中比較實用的方法之一。話不多說,上 function newarr arr return arr var arr 1 1,2 5,6 3,5 5,6 8,9 8 console.log newarr arr 此方法也是es5中比較簡單的方法之一,基本思路是新建乙...