<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
//1.
function unique(arr){
//原理:如有不重复的数组元素,数组元素作为属性名,属性值随便赋一个值
var obj = {};
for(var i = 0 ,result = [];i<arr.length ; i++){
//在obj这个对象中去寻找当前下表为元素的属性名
if(!obj[arr[i]]){//如果找不到
//将当前数据存入result数组中
result.push(arr[i])
//并且同事对刚刚存入找不到的那个对象随便赋值
obj[arr[i]] = 1
}
}
return result ;
}
var arr = [1,4,8,7,5,1,68,1,6,7];
console.log(unique(arr))
//2.利用数组API去重 indexOf 如果找到对应的元素,返回的是下标,否则返回的是-1
function uni(arr){
for(var i = 0 ,result = [];i<arr.length ; i++){
if(result.indexOf(arr[i]) == -1){
result.push(arr[i]);
}
}
return result;
}
var arr1 = [1,4,8,7,5,1,68,1,6,7];
console.log(uni(arr1));
//3.利用排序,先排序,在相邻的作比较
function isASC(arr){
arr = arr.sort(function(x,y){
return x-y
})
for(var i = 0 ; i<arr.length-1 ; i++){
for(var j=1 ;j<arr.length ; j++){
if(arr[i] == arr[j]){
arr[j] = arr[j+1];
}
if (arr[i] == undefined) {
arr.length--;
}
}
}
arr.length = arr.length-1;
return arr;
}
console.log(isASC(arr1));
// 4.在原型链上完成去重
Array.prototype.Arryno = function(){
var repeat = arr[0];
var result = [];
//i从0开始遍历arr,同时创建空数组resu()没有重复的元素放入这个数组
for(var i = 0; i<arr.length;i++){
// 遍历resul j从0开始
for(var j=0;j<result.length;j++)
{ //如果result中的当前元素等于arr中的当前元素
if (result[j] == arr[i]) {
break;//退出循环
}
}
// 如果j等于result的长度
if (j==result.length) {
result[result.length] = arr[i];
}
//江arr中当前元素,最佳到result末尾
}
return result;
}
var arr =[1,2,3,4,5,1,2,3,4,5];
console.log( arr.Arryno());
</script>
</head>
<body>
</body>
</html>
运用对象或则原型链去重
最新推荐文章于 2020-04-02 01:35:41 发布