做法是把数组中的相同值都删除掉,剩下的就是不同的,写法与注解如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
</body>
</html>
<script>
function fn(arr){
// 定义一个新数组,用来存放不同值,与传进来的数组arr做比较的
var newArr=[];
//在newArr添加传进来的数组的第一项
newArr.push(arr[0]);
var j=0;
// 遍历数组停止的条件,由于不知道什么时候停止循环,所有用while
//循环判断,为什么用两数组的长度做循环条件,看下面代码的数组的删增就会明白
while(newArr.length<arr.length){
// 这里的i=j+1,for循环是删除与arr相同的值
for (var i = j+1; i<arr.length; i++) {
// arr的第一项不需要比较
// 比较是从arr的第二项开始于newArr的第一项开始
if(arr[i]==newArr[j]){
// 没当有相同值时,就删除掉
arr.splice(i,1);
// 删除掉之后,后面的项的索引(下标)都会减1
// 所以避免有遗漏项,所以索引要对应减1
i--;
}
}
// 当把相同值删除完时,newArr长度要加一
j++;
// 把arr下一个不同值存起来用来作比较
newArr.push(arr[j]);
}
// 当循环结束后arr的相同值也就删除完了
return arr;
}
var arr=[1,2,3,3,4,6,6,6,9,9,9,9];
fn(arr);
console.log(arr);
</script>
复制代码