数组扁平化
概念
数组扁平化:将多维数组变为一个一维数组
方法1 ES6的flat方法
const arr = [1, 2, [3, 4, [5, 6]]]
//Infinity 是一个可以应用于任何变量的数值
console.log(arr.flat(Infinity)) //[ 1, 2, 3, 4, 5, 6 ]
方法2 JSON和正则表达式
//JSON.stringify的方法先转换为字符串,然后通过正则表达式过滤掉字符串中的数组的方括号,最后再利用JSON.parse把它转换成数组
const arr = [1, 2, [3, 4, [5, 6]]]
const re = JSON.stringify(arr).replace(/\[|\]/g, '')
const res = JSON.parse('[' + re + ']')
console.log(res) //[ 1, 2, 3, 4, 5, 6 ]
方法3 reduece方法
function flatten(arr) {
return arr.reduce((prev, item) => {
return prev.concat(Array.isArray(item) ? flatten(item) : item)
}, [])
}
const re = flatten([1, 2, [3, 4, [5, 6]]])
console.log(re) //[ 1, 2, 3, 4, 5, 6 ]
方法4 join()+split()
数组join()的方法,可以把数组转换成逗号分隔的字符串,用split方法把字符串重新转换为数组
const arr = [1, 2, [3, 4, [5, 6]]]
console.log(arr.join(',').split(',')) //[ '1', '2', '3', '4', '5', '6' ]