JavaScript数组去重
面试时可能会被问到JavaScript数组如何去重这个问题,博主就遇到过,当时没答上来,现在想把它好好总结一下,与大家分享。
上代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>javascript数组去重</title>
</head>
<body>
<p>javascript数组去重</p>
<script type="text/javascript">
/*
方式一:借助indexOf()方法判断此元素在该数组中首次出现的位置下标与循环的下标是否相等
*/
var ar = [1,23,1,1,1,3,23,5,5,6,6];
console.log("before:" +ar);
function rep2(arr) {
for (var i = 0; i <arr.length; i++) {
if (arr.indexOf(arr[i]) != i) {
arr.splice(i,1);//删除数组元素后数组长度减1后面的元素前移
i--;//数组下标回退
}
}
return arr;
}
var a1 = rep2(ar);
console.log("after:" +a1);
/*
方式2:利用数组中的filter()
*/
var fruitArray = ['apple','orange','orange','banana','apple','pear','watermeton','strawberry','strawberry'];
var r = fruitArray.filter(function(element,index,self){
return self.indexOf(element) === index;
});
console.log(r);//Array(6)列出
/*
方式3:借助新数组 通过indexOf()判断当前元素在数组中的索引,如果与循环的下表相等就添加到新的数组中
*/
var numArray = [1,33,45,33,56,77,12,24,24,1,1,24];
function rep(arr) {
var newNumArray = [];
for (var i = 0; i < numArray.length; i++) {
if (numArray.indexOf(numArray[i]) == i) {
newNumArray.push(numArray[i]);
}
}
return newNumArray
}
var arr2 = rep(numArray);
console.log(numArray);
console.log(arr2);
</script>
</body>
</html>
结果:
以上用了三种方法解决了数组去重的问题。其实还有很多种方法,可以用来实现解决这个问题,博主就不一一列举了。
最后:程序来源于生活,更高于生活。请拥有一颗热爱生活的心,用心去感受生活,或酸或甜或苦或辣,都是生活的味道。