将多维数组
aarr=[ 1,[ 1, 2], 4, [ 2,[ 3, 4, 8, 9], 4], [ 1, 3, 5, 6, 7]]
转换为一维数组
a = [1, 1, 2, 4, 2, 3, 4, 8, 9, 4, 1, 3, 5, 6, 7]
将多维数组转换为一维数组 –递归方法
let aarr=[ 1,[ 1, 2], 4, [ 2,[ 3, 4, 8, 9], 4], [ 1, 3, 5, 6, 7]]
let a = []; //存放结果
function removeArray(arr){
for(let i = 0; i< arr.length;i++){
if (Array.isArray(arr[i])) { //判断是否是数组
removeArray(arr[i])
} else{
a.push(arr[i])
}
}
}
removeArray(aarr);
console.log(a); //[1, 1, 2, 4, 2, 3, 4, 8, 9, 4, 1, 3, 5, 6, 7]
将多维数组转换为一维数组 并去重
let aarr=[ 1,[ 1, 2], 4, [ 2,[ 3, 4, 8, 9], 4], [ 1, 3, 5, 6, 7]]
let a = []; //结果
/*将多维数组转换为一维数组 并去重--递归方法*/
function removeArray(arr){
for(let i = 0; i< arr.length;i++){
if (Array.isArray(arr[i])) { //判断是否是数组
removeArray(arr[i])
} else{
if(a.indexOf(arr[i]) == -1){ //判断对数组进行去重
a.push(arr[i])
}
}
}
}
removeArray(aarr);
console.log(a); // [1, 2, 4, 3, 8, 9, 5, 6, 7]
判断是否是数组的方式
方法1: Array.isArray(arr)
方法2: arr instanceof Array
// instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。
方法3: arr.length > 0
不可使用 typeof ,因为返回的是object
var aa= [1,2]
console.log(typeof aa ) //object
方法2
先转换成字符串分割成数组,然后在遍历去除重复数据。
aarr=[ 1,[ 1, 2], 4, [ 2,[ 3, 4, 8, 9], 4], [ 1, 3, 5, 6, 7]]
let result = []
aarr.toString().split(',').map(item => {
if (result.indexOf(Number(item)) == -1) {
result.push(Number(item))
}
})
console.log(result) // [ 1, 2, 4, 3, 8, 9, 5, 6, 7 ]