将多维数组转换为一维数组 并去重 使用递归方法

将多维数组

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 ]
    原文作者:艾小逗
    原文地址: https://blog.csdn.net/qq_32442967/article/details/100101230
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞