<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
</body>
<script>
//数组去重
//构建一个新数组,将结果放在新数组中
//方法1:建构一个为false的标志,将原数组中的元素与结果数组中的元素进行循环比较,如果一发现重复,则马上标志为true,退出此次循环,如果原始数组中某个元素与结果数组中的元素一轮比较下来,标志还为false,则证明此元素不重复,则将那个元素放入结果数组中
function removeDuplicates(arr) {
var result = new Array();
for(var i =0;i<arr.length;i++){
var repeat=false;
for(var j=0;j<result.length;j++){
if(arr[i]==result[j]){
repeat=true;
break;
}
}
if(!repeat){
result.push(arr[i]);
}
}
return result;
}
var Result = removeDuplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]);
console.log(Result);
//方法2:构建一个结果数组,现将初始数组sort排序,如果是数值相等的元素肯定会是相邻元素,将原始数组中第i个元素与结果数组中最后一个元素相比较,如果不相等则将d第i个元素push进结果数组
var array2=[1, 2, 4, 4, 3, 3, 1, 5, 3,8,9,8];
var result2=new Array();
function removeDuplicates2(array){
array.sort();
var result2=new Array();
for(var i=0;i<array.length;i++){
if(array[i]!=result2[result2.length-1]){
result2.push(array[i]);
}
}
return result2;
}
var Result2=removeDuplicates2(array2);
console.log(Result2);
//方法3(推荐使用),创建一个结果数组,创建一个空对象,将原数组中的第i个元素与对象中的属性进行比较,如果不能在对象中访问到该属性,则将元素存入结果数组中,也将元素的内容作为对象的一个属性,赋值为1,取出原始数组一个元素,如果能在对象中访问到则说明这个元素是重复的
var array3=[112,112,34,'你好',112,112,34,'你好','str','str1'];
var json={};
var result3=new Array();
function removeDuplicates3(array){
for(var i=0;i<array.length;i++){
if(!json[array[i]]){
json[array[i]]=1;
result3.push(array[i]);
}
}
return result3;
}
var Result3=removeDuplicates2(array3);
console.log(Result3);
</script>
</html>
js数组去重
最新推荐文章于 2024-04-02 18:05:32 发布