js实现数组中的值是唯一的

去重方法一

遍历数组的值,当此值不存在新的数组中,则push到新的数组中去

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function isInArray(value, array) {
var hasValue = false;
array.forEach(function(elem){
if (elem === value) {
hasValue = true;
return;
}
})
return hasValue;
}
function uniq1(array){
var arr = [];
array.forEach(function(elem){
if (!isInArray(elem, arr)) {
arr.push(elem);
}
});
return arr;
}
uniq1([1,1,1,3,3,3,5,5,5,6,7,8]) //[1, 3, 5, 6, 7, 8]

去重方法二

根据对象的key不会重复的特点来进行去重

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function uniq2(array){
var arrTemp = [];
var obj = {};
for(var i=0; i<array.length; i++){
if (obj[array[i]]) {
continue;
} else {
obj[array[i]] = true;
arrTemp.push(array[i]);
}
}
return arrTemp;
}
uniq2([1,2,3,4,4,4]) //[1, 2, 3, 4]

去重方法三

根据Array的indexOf方法只会返回符合条件的第一个值的index索引,如果有多个相同的值,其它的值的索引和它的位置不一致。
具体看参照

1
2
3
4
5
6
7
function uniq3(array) {
return array.filter(function(item, pos) {
return array.indexOf(item) == pos;
})
}
uniq3([1,2,2,22,3]) //[1, 2, 22, 3]