扁平化嵌套数组

231 阅读1分钟

数组扁平化是指将一个多维数组变为一个一维数组

const arr = [1,[2,[3,[4,5]]]]
// =>[1,2,3,4,5]

1.使用 flat()

const arr1 = arr.flat(Infinity) 

2.利用正则

const arr2 = JSON.stringify(arr).replace(/\[|\]/g,'').split(',')

不过,数据类型都会变为字符串

3.正则的改良版本

const arr3 = JSON.parse('[' + JSON.stringify(arr).replace(/\[|\]/g,'') + ']')

4.使用 reduce

const flatten = arr => {
 	return arr.reduce((pre,cur) => {
    	return pre.concat(Array.isArray(cur) ? flatten(cur) : cur)
    }, [])
  }
const arr4 =flatten(arr) 

5.函数递归

const arr5 = []
const fn = arr => {
	for ( let i = 0; i < arr.length; i++){
 		if(Array.isArray(arr[i])){
    		fn(arr[i])
    	}else{
        	arr5.push(arr[i])
        }
 	}
}