本文主要介绍js阵列重复数据消除的11种方法。对js数组感兴趣的同学可以尝试这11种方法。
在实际工作或面试中,我们经常会遇到“阵列重复数据删除”的问题。接下来,js实现的阵列重复数据消除方法有很多:
1.依次将数组的每个元素与其他元素进行比较,找到重复的元素并删除它们。
var arr=[1,23,1,1,1,3,23,5,6,7,9,9,8,5,5,5,5];
console . log(arr);//[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5, 5, 5, 5]
函数noRepeat1(arr) {
for(var I=0;I arr . length-1;i ){
for(var j=I 1;j排列长度;j ){
if(arr[i]===arr[j]){
arr.splice(j,1);
j-;
}
}
}
返回arr
}
var arr 2=no repeat 1(arr);
console . log(arr 2);//[1, 23, 3, 5, 6, 7, 9, 8]
2.借助indexOf()方法,判断该元素在该数组中第一次出现的位置下标是否等于循环下标。
var arr=[1,23,1,1,1,3,23,5,6,7,9,9,8,5,5,5];
console . log(arr);//[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5, 5, 5]
函数noRepeat2(arr) {
for(var I=0;长度;i ) {
if (arr.indexOf(arr[i])!=i) {
剪接排列(I,1);//删除数组元素后,数组长度减1后的元素向前移动。
I-;//数组下标回退
}
}
返回arr
}
var new arr=no repeat 2(arr);
console . log(new arr);//[1, 23, 3, 5, 6, 7, 9, 8]
3.在数组中使用filter方法
var arr=['苹果','香蕉','梨','苹果','橘子'];
console.log(arr) //['苹果','香蕉','梨','苹果','橘子','橘子']
var new arr=arr . filter(function(value,index,self){
return self . index of(value)===index;
});
console . log(new arr);//['苹果','香蕉','梨','橘子']
4.在新数组的帮助下,通过square的index判断数组中当前元素的index,如果等于循环的下标,则将其添加到新数组中。
var arr=[1,23,1,1,1,3,23,5,6,7,9,9,8,5,5,5];
console.log(arr) //[1,23,1,1,1,3,23,5,6,7,9,9,8,5,5,5]
函数noRepeat4(arr) {
var ret=[];
for(var I=0;长度;i ) {
if (arr.indexOf(arr[i])==i) {
ret . push(arr[I]);
}
}
返回ret
}
var arr 2=no repat 4(arr);
console . log(arr 2);//[1, 23, 3, 5, 6, 7, 9, 8]
5.使用空对象记录新数组中已经存储的元素。
var arr=[1,23,1,1,1,3,23,5,6,7,9,9,8,5];
console.log(arr) //[1,23,1,1,1,3,23,5,6,7,9,9,8,5]
var obj={ };
var new arr=[];
for(var I=0;iarr .长度;i ){
如果(!obj[arr[i]]){
obj[arr[I]]=true;
new arr . push(arr[I]);
}
}
console . log(new arr);//[1, 23, 3, 5, 6, 7, 9, 8]
6.借助新数组,判断该元素是否存在于新数组中,如果不存在,则将该元素添加到新数组中。
var arr=[1,23,1,1,1,3,23,5,6,7,9,9,8,5];
console . log(arr);//[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5]
函数noRepeat6(arr){
var new arr=[];
for(var I=0;长度;i ){
if(new arr . index of(arr[I])==-1){
new arr . push(arr[I]);
}
}
return newArr
}
var arr 2=no repeat 6(arr);
console . log(arr 2);//[1, 23, 3, 5, 6, 7, 9, 8]
7.借助新数组,判断该元素是否存在于新数组中。如果没有,将元素添加到新数组中(原始数组具有相同的长度,但按照字符串顺序排序)
var arr=[1,23,1,1,1,3,23,5,6,7,9,9,8,5];
console . log(arr);//[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5]
函数noRepeat7(arr) {
var ret=[],
结束;//临时变量用于比较重复的元素
arr . sort();//对数字重新排序
end=arr[0];
ret . push(arr[0]);
for(var I=1;长度;i ) {
if (arr[i]!=end) {//如果当前元素不等于临时元素,则将此元素添加到新数组中。
ret . push(arr[I]);
end=arr[I];
}
}
返回ret
}
var arr 2=no repat 7(arr);
console . log(arr 2);//[1, 23, 3, 5, 6, 7, 8, 9]
8.这种方法不会在新阵列的帮助下直接更改原始阵列,而是对经过重复数据消除的阵列进行排序。
var arr=[1,23,1,1,1,3,23,5,6,7,9,9,8,5];
console . log(arr);//[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5]
函数noRepeat8(arr) {
var结束;//临时变量用于比较重复的元素
arr . sort();//对数字重新排序
end=arr[0];
for(var I=1;长度;i ) {
If (arr[i]==end) {//如果当前元素等于临时元素,则从数组中删除此元素。
剪接排列(I,1);
I-;
}否则{
end=arr[I];
}
}
返回arr
}
var arr 2=no repeat 8(arr);
console . log(arr 2);//[1, 23, 3, 5, 6, 7, 8, 9]
9.双循环改变原始数组。
var arr=[1,1,2,2,3,3,4,4,5,5,4,3,1,2,6,6,6,6];
console . log(arr);//[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 4, 3, 1, 2, 6, 6, 6, 6]
函数noRepeat9(arr){
for(var I=0;长度;i ) {
for(var j=0;j排列长度;j ) {
if (arr[i]==arr[j] i!=j) {//删除重复的数字。
arr.splice(j,1);
}
}
}
返回arr
}
var arr 2=no repeat 9(arr);
console . log(arr 2);//[1, 2, 3, 4, 5, 6]
10.在新阵列的帮助下
var arr=[1,1,2,2,3,3,4,4,5,5,4,3,2,1,1,1];
console . log(arr);//[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 4, 3, 2, 1, 1, 1]
var new arr=[];
for(var I=0;长度;i ) {
var repar=[];//接收重复数据后的下标
//内部循环找到有重复数据的下标。
for(var j=I 1;j排列长度;j ) {
if (arr[i]==arr[j]) {
reparr . push(j);//找出下面重复数据的下标
}
}
//console . log(repArr);
If (repArr.length==0) {//如果重复数组没有值,则不是重复数据。
new arr . push(arr[I]);
}
}
console . log(new arr);//[5, 4, 3, 2, 1]
11.借助于ES6提供的集合结构
var arr=[1,1,2,2,3,3,4,4,5,5,4,3,2,1,1,1];
console . log(arr);//[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 4, 3, 2, 1, 1, 1]
函数noRepeat11(arr){
var new arr=[];
var myset=新集合(arr);//利用集合结构不能接收重复数据的特性
for(我的变量值){
新推力
}
return newArr
}
var arr2=noRepeat11(arr)
console . log(arr 2);//[1, 2, 3, 4, 5]
这是js阵列重复数据消除的11种方法的详细信息。有关js阵列重复数据删除的更多信息,请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。