找到重复元素
- 先排序,再比较相邻元素是否相同
var arr = [9, 9, 111, 2, 3, 4, 4, 5, 7];
var sortedArr=arr.sort();//字典顺序,输出:111,2,3,4,4,5,7,9,9
var results = [];
for (var i = 0; i < arr.length - 1; i++) {
if (sortedArr[i + 1] == sortedArr[i]) {
results.push(sortedArr[i]);
}
}
console.log(results);
得到干净数组
- 利用对象字面量的key与value关联性
function distinct(arr) {
var obj = {}, i = 0, len = 0;
if (Array.isArray(arr) && arr.length > 0) {
len = arr.length;
for (i = 0; i < len; i += 1) {
obj[arr[i]] = arr[i];
}
return Object.keys(obj);
}
return [];
}
Object.keys(obj),其返回的是对象的key值
var obj = { 0 : “a”, 1 : “b”, 2 : “c”}; console.log(Object.keys(obj)); //0,1,2
var arr = [“a”, “b”, “c”]; console.log(Object.keys(arr)); //0,1,2
- 利用jquery
var arr = ["1","2","3","4","5","4","3"];
var uniqueArr = [];
$.each(arr, function(i, el){
if($.inArray(el, uniqueArr) === -1)
uniqueArr.push(el);
});//["1", "2", "3", "4", "5"]
- 利用数组方法indexOf
function unique(array){
var n = [];//临时数组
for(var i = 0;i < array.length; i++){
if(n.indexOf(array[i]) == -1)
n.push(array[i]);
}
return n;
}
var arr=[1,3,2,2,3,2,3,2,1] unique(arr);//[1,3,2]
- 自己写的方法,想利用哈希散列,但实现的不好,能找到重复的元素,但当重复次数大于2次时,值会重复
function dash(arr){
var m=[];
var n=[];
for(var i=0;i<arr.length;i++){
if(m[arr[i]]==0){
n.push(arr[i]);
}else
m[arr[i]]=0;
}
return n;
}
var b=[2,3,2,4,3,1,5];
dash(b); //[2,3]
var a=[4,2,2,3,3,4,5,4,5,5,1]; //重复多次
dash(a); //[2, 3, 4, 4, 5, 5]