JS中去除数组中重复元素的方法
程序员文章站
2022-06-11 16:17:50
...
JS中去除数组中重复元素的方法
第一种方法:使用数组中的splice方法
splice():删除元素,并向数组添加新元素,并返回被删除的元素
function f1(){
var _arr=[8,5,0,3,1,8,5,0,3,1,8,8,8,5,2,2,2];
for(n=0;n<_arr.length-1;n++){//循环数组的所有元素
for(i=n+1; i<_arr.length;i++){//拿下标为n的元素和它后面的所有元素进行比较
if(_arr[n]==_arr[i]){//如果第i位上的元素和第n上的元素相等就删除
_arr.splice(i--,1);//使用splice方法删除重复的元素
/**使用i--的原因
*splice()方法两个参数的含义:
*第一个参数是从下标为多少的位置开始
*第二个参数是从开始的位置往后删除几个元素
*例如splice(1,2)就是从下标为1的地方开始向后删除2个元素
*使用i--是因为:
*假如用下标为0的8与后边的元素进行比较,
*当和第二个8进行比较时,这时需要把这个8删除,此时i=5
*如果是_arr.splice(5,1)的话删除的是8后面的数,而不是8
*所以要用i--,把5变为4,此时删除的就是8了
*/
}
}
}
console.log(_arr);//输出[8,5,0,3,1,2]
}
f1();
第二种方法:使用indexOf()
indexOf():用来检测指定的子字符串值在字符串中首次出现的位置,
这种方法较简单,但是低版本浏览器可能不兼容indexOf()方法
indexOf()方法如果要检索的字符串没有出现,则返回-1
function f2(){
var _arr=[8,5,0,3,1,8,5,0,3,1,8,8,8,5,2,2,2];
var _empty=[];//声明一个空数组
for(n=0;n<_arr.length;n++){//循环_arr数组中元素
//判断_empty数组中是否有_arr数组中的第n个元素,小于0就是没有
//如果没有就把这个元素添加到_empty数组中
if(_empty.indexOf(_arr[n])<0){
_empty.push(_arr[n]);//push()也是数组中的一个方法,用来向数组的末尾添加元素
}
}
_arr=_empty;//把数组_arr赋值为_empty,也可以直接输出_empty
console.log(_arr);//输出[8,5,0,3,1,2]
}
f2();
第三种方法:兼容第二种写法
function f3(){
var _arr=[8,5,0,3,1,8,5,0,3,1,8,8,8,5,2,2,2];
var _empty=[];
var _flag=0;//声明一个变量用来做标记,初始值为0
for(n=0; n<_arr.length; n++){//循环_arr数组
for(i=0; i<_empty.length; i++){//循环数组_empty
//使_arr中的第n个元素和_empty中的每一个元素进行比较
if(_arr[n]==_empty[i]){
_flag=1;//如果_arr中第n个元素和_empty中的某个元素相等,就给标记_flag赋值为1
break;//如果有一个相等的就可以结束循环了
}
}
if(_flag==0){//如果_flag==0,即_arr数组中的元素和_empty中的每个元素都不相等
_empty.push(_arr[n]);//把这个元素添加到_empty中
}
_flag=0;//每次对_empty循环完毕都需要把标记_flag的值初始为0
}
_arr=_empty;//把_empty赋值给_arr,也可以直接打印_empty
console.log(_arr);//输出[8,5,0,3,1,2]
}
f3();
上一篇: 移除元素
下一篇: nginx配置文件介绍