数组扁平去重算法
本篇从复杂到简易依次展现,是最为全面的习题整理。
1. 不利用任何函数的方法
let a = [1,2,3,4,5,[1,2,3]];
let b = [];
let c = [];
for(let i=0; i<a.length; i++){
//查找到二维数组 construct 不能正确显示
if(a[i] instanceof Array){
console.log("成功找到")
b = b.concat(a[i]);
break;
}
b[i] = a[i];//必须要放在判断是否是数组的下面
}
//数组去重
for(let i=0; i<b.length; i++){
//设置一个新的数组
for(let j=0; j<=c.length; j++){
if(b[i]==c[j]){
break;
}
};
//如果没有找到相同的则将赋值给c
if(c.length == j){
c[c.length]==b[i]
}
}
for(val in c)
{
console.log(val);
}
2.利用数组函数的方法
let a = [1,2,3,4,5,[1,2,3]];
let b = [];
for(let i=0; i<a.length; i++){
//查找到二维数组 construct 不能正确显示
if(a[i] instanceof Array){
console.log("成功找到")
b = b.concat(a[i]);
break;
}
b[i] = a[i];//必须要放在判断是否是数组的下面
}
for(let i=0; i<b.length; i++){
for(let j=i+1; j<=b.length; j++){
if(b[i]==b[j]){
b.splice(j,1);
}
};
}
for(val of b){
console.log(val);
}
3.利用一些数据结构的唯一性
//方法1 对象属性具有唯一性不能有两个键值不同值
let obj = {
};
for(let i=0; i<arr.length; i++){
//obj[arr[i]] = 0;
//判断一下重复了几次
//没有赋值的时候键值的值默认为0
if(obj[arr[i]]){
obj[arr[i]]++;//当键是变量的时候一定要加[]
}
else{
obj[arr[i]] = 1;
}
//如果没有的话就给它赋值为1 有的话就加加
}
console.log(obj);
//方法2伪数组中不允许出现重复的值
let a = [1,2,3,4,5,[1,2,3]];
let b = [];
let c=[]
for(let i=0; i<a.length; i++){
//查找到二维数组 construct 不能正确显示
if(a[i] instanceof Array){
console.log("成功找到")
b = b.concat(a[i]);
break;
}
b[i] = a[i];//必须要放在判断是否是数组的下面
}
c =Array.from(new Set(b))
for(val of c){
console.log(val);
}
希望能带给你帮助加油冲刺呀!