一、什么是’扁平化‘
扁平化
的意思对于数组来说,就是将多维数组
展开成一维数组
或少于当前数组维数
的数组。
二、实现扁平化
1、toString 和 split 相结合
思路:
toString
可以将多维数组
转变成字符串
,在通过 split
转换成数组,此时每个元素都为字符串,但需注意的是 此时每个数组元素都为字符串
,可以用Number
进行转换。
实现:
let arr = [1,2,[3,4,[5,6,7]]] function strSplit (arr) { return arr.toString().split(',').map((i) => Number(i)) } console.log('结果是:', strSplit(arr)) // 结果是:[1,2,3,4,5,6,7]
2、reduce迭代
思路:
reduce
为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值
(或者上一次回调函数的返回值
),当前元素值
,当前索引
,调用 reduce 的数组。可以通过迭代的方式进行数组扁平化~
实现:
let arr = [1, [2, [3, 4, 5]]] function reduceArr (arr) { let result = arr.reduce((newArr, i) => { return newArr.concat(Array.isArray(i) ? reduceArr(i) : i) }, []) return result } console.log('结果是:', reduceArr(arr)) // 结果是:[1,2,3,4,5]