今天学习一下数组去重的几种方法,虽然不全但是实用
方法一:
<script>
let arr=[1,2,3,5,4,8,8,4,8,8,2,2]
function chuanru(arr){
let newarr=[];
for(var i=0;i<arr.length;i++){
if(newarr.indexOf(arr[i])===-1){
newarr.push(arr[i]);
}
}
return newarr;
}
console.log(chuanru(arr));
</script>
使用了push与indexOf进行去重
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
如果没有找到匹配的字符串则返回 -1
原理
在便利数组后,如果判断其没有相匹配的数值,则将其添加到新数组中
方法二:
<script>
let arr=[1,2,3,5,4,8,8,4,8,8,2,2]
function chuanru(arr){
return arr.filter((item,index)=>{
return arr.indexOf(item)===index
})
}
console.log(chuanru(arr));
</script>
使用了filter与indexOf去重
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
filter() 不会对空数组进行检测。
filter() 不会改变原始数组。
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
如果没有找到匹配的字符串则返回 -1
原理
运用filter方法直接过滤掉重复的数值.,
方法三:
<script>
let arr=[1,2,3,5,4,8,8,4,8,8,2,2]
function chuanru(arr){
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]===arr[j]){
arr.splice(j,1);
j--;
}
}
}
return arr
}
console.log(chuanru(arr));
</script>
这是双层for循环加上splice去重
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
原理
在写第二层for循环时一定要带上,上一个参数加1,别写成了j=1。在下面判断时当arr[i]与arr[j]相等,则将arr数组中后面一个相同值删除掉,最终得到全部不一样值得数组。一定要记得j–,因为splice会改变数组长度。
方法四:
<script>
let arr=[1,2,3,5,4,8,8,4,2,2]
function chuanru(arr){
let newarr=[]
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]===arr[j]){
i++;
j=i;
}
}
newarr.push(arr[i])
}
return newarr
}
console.log(chuanru(arr));
</script>
这是使用双层for循环加上push进行去重
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
原理
这个方法其原理是在执行第二层for循环时,判断arr[i]与arr[j]的值如果arr[i]与arr[j]相等时就会跳过接下来的循环,重新执行第一层循环,除非判断其与后面的都不相等,才将其添加到新数组中。
3491

被折叠的 条评论
为什么被折叠?



