设定一个多维数组
let arr = [1,[2,[3,4],5,],6,7,8,9]
一、使用ES6自带的flat(),如果括号里不写默认为1,Infinity代表正无穷,即对多维数组全部拉平
let newarr = arr.flat(Infinity)
console.log(newarr) //[ 1, 2, 3, 4, 5, 6, 7, 8, 9]
二、利用正则表达式,缺陷就是会将数组中的每一项变为字符串
let newarr = JSON.stringify(arr).replace(/\[|\]/g, '').split(',')
console.log(newarr2); //['1', '2', '3', '4', '5', '6','7', '8', '9']
三、正则表达式改良版
let newarr = JSON.parse("["+JSON.stringify(arr).replace(/\[|\]/g, '')+"]")
console.log(newarr); //[ 1, 2, 3, 4, 5, 6, 7, 8, 9]
四、递归
let newarr = []
const fnc = function (arr) {
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
fnc(arr[i])
} else {
newarr.push(arr[i])
}
}
}
fnc(arr)
console.log(newarr); // [1, 2, 3, 4, 5, 6, 7, 8, 9]