数组扁平化的几种方法

85 阅读1分钟

设定一个多维数组

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]