扁平化一个数组意味着把嵌套的数组转换为一个一维数组。
以下是一些将嵌套数组扁平化的方法:
-
使用递归函数:递归地遍历数组,当遇到一个元素是数组时,继续递归遍历该数组,直至遍历至非数组元素,然后将该元素加入到扁平化数组。
-
使用Array.prototype.flat()方法:该方法返回一个新数组,该数组将所有子数组的元素连接成一个新数组,并基于指定的深度递归下去。
-
使用reduce方法:reduce方法可将所有元素纵向归约成一个扁平化数组。
-
使用扩展运算符:使用 ... 运算符可以将数组的所有元素打散,从而将嵌套数组变成一个一维数组。
示例:
// 递归方法 function flattenRecursive(arr) { return arr.reduce((prev, curr) => { return prev.concat(Array.isArray(curr) ? flattenRecursive(curr) : curr); }, []); } // Array.prototype.flat()方法 const arr1 = [1, 2, [3, 4, [5, 6]]]; console.log(arr1.flat(2)); // [1, 2, 3, 4, 5, 6] // reduce方法 function flatten(arr) { return arr.reduce(function(prev, curr) { return prev.concat(Array.isArray(curr) ? flatten(curr) : curr); }, []); } // 扩展运算符 const arr2 = [1, 2, [3, 4, [5, 6]]]; console.log([].concat(...arr2)); // [1, 2, 3, 4, 5, 6]