flat()
是 JavaScript 数组的一个方法,用于将嵌套的数组"扁平化"到指定的深度。默认情况下,flat()
会将数组扁平化一层(即深度为 1)。也可以通过传递一个参数来指定要扁平化的深度。
基本用法
javascript
const arr = [1, [2, [3, [4, 5]]], 6];
// 默认深度为 1
const flatArr1 = arr.flat();
console.log(flatArr1); // 输出: [1, 2, [3, [4, 5]], 6]
// 指定深度为 2
const flatArr2 = arr.flat(2);
console.log(flatArr2); // 输出: [1, 2, 3, [4, 5], 6]
// 指定深度为 Infinity,完全扁平化
const flatArrInfinity = arr.flat(Infinity);
console.log(flatArrInfinity); // 输出: [1, 2, 3, 4, 5, 6]
参数
depth
(可选):指定要扁平化的深度。默认值为 1。如果设置为Infinity
,则会将数组完全扁平化,直到所有嵌套的数组都被展开。
示例
示例 1: 默认深度为 1
javascript
const arr1 = [1, [2, 3], [4, [5, 6]]];
const flatArr1 = arr1.flat();
console.log(flatArr1); // 输出: [1, 2, 3, 4, [5, 6]]
示例 2: 指定深度为 2
javascript
const arr2 = [1, [2, [3, 4]], [5, 6]];
const flatArr2 = arr2.flat(2);
console.log(flatArr2); // 输出: [1, 2, 3, 4, 5, 6]
示例 3: 完全扁平化
javascript
const arr3 = [1, [2, [3, [4, [5, 6]]]]];
const flatArr3 = arr3.flat(Infinity);
console.log(flatArr3); // 输出: [1, 2, 3, 4, 5, 6]
注意事项
flat()
方法不会改变原数组,而是返回一个新的扁平化后的数组。- 如果数组中包含非数组元素,
flat()
会保留这些元素。
兼容性
flat()
方法在现代浏览器和 Node.js 中都得到了广泛支持,但在一些较旧的环境中可能不可用。如果你需要在不支持 flat()
的环境中使用它,可以使用 polyfill 或其他替代方法。
替代方法
如果你需要在不支持 flat()
的环境中实现类似的功能,可以使用递归函数:
javascript
function flattenArray(arr, depth = 1) {
return arr.reduce((acc, val) => {
if (Array.isArray(val) && depth > 0) {
acc.push(...flattenArray(val, depth - 1));
} else {
acc.push(val);
}
return acc;
}, []);
}
const arr = [1, [2, [3, [4, 5]]], 6];
const flatArr = flattenArray(arr, Infinity);
console.log(flatArr); // 输出: [1, 2, 3, 4, 5, 6]