js原生已经提供了一个数组方法是用来展开多维数组如下:
let arr = [1, 2, 3, ['11', 33, ['61', 5, 4, [33, 55]]], ['20', 2, 65, [5, [12]]]]
let arr1 = arr.flat(Infinity)
如下是一个js的数组嵌套数据(多维数组)以及展开数组的代码
//多为数组
let arr = [1, 2, 3, ['11', 33, ['61', 5, 4, [33, 55]]], ['20', 2, 65, [5, [12]]]]
//先声明一个空数组,存放展开的每一项
let arr1 = [];
//展开的方法:函数接收一个多维数组
function openArr(arr){
//循环遍历多维数组
arr.forEach(item => {
//判断每一项是否为数组,如果是数组,继续调用该函数进行遍历
if(Object.prototype.toString.call(item) === '[object Array]'){
openArr(item)
}else{
//如果每一个项不为数组,就push进 arr1 空数组里
arr1.push(item)
}
})
}
//调用
openArr(arr)
//输出arr1为展开的多维数组
console.log(arr1)
以上代码封装方法
let arr = [1, 2, 3, ['11', 33, ['61', 5, 4, [33, 55]]], ['20', 2, 65, [5, [12]]]]
function flat(arr){
let newArr = [];
function openArr(arr){
arr.forEach(item => {
if(Object.prototype.toString.call(item) === '[object Array]'){
openArr(item)
}else{
newArr.push(item)
}
})
}
openArr(arr)
return newArr;
}
let a = flat(arr)
console.log(a);