在 ES10 中,新增了一个 Array.flat() 方法,它可以将嵌套数组展开为一维数组。这个方法非常实用,可以大大简化嵌套数组的处理。
用法
Array.flat() 方法有一个可选的参数 depth,用于指定要展开的嵌套层数。默认值为 1,即只展开一层嵌套数组。如果传入 Infinity,则会展开所有嵌套数组。
下面是一个简单的示例:
const arr = [1, 2, [3, 4, [5, 6]]]; const flatArr = arr.flat(); console.log(flatArr); // [1, 2, 3, 4, [5, 6]]
在上面的代码中,原始数组 arr 中包含一个嵌套数组 [3, 4, [5, 6]],使用 flat() 方法展开后得到的 flatArr 数组中,这个嵌套数组还是存在的。
如果要将所有嵌套数组都展开,可以这样写:
const arr = [1, 2, [3, 4, [5, 6]]]; const flatArr = arr.flat(Infinity); console.log(flatArr); // [1, 2, 3, 4, 5, 6]
注意事项
在使用 Array.flat() 方法时,需要注意以下几点:
1. 不会改变原数组
Array.flat() 方法不会改变原数组,而是返回一个新的数组。
const arr = [1, 2, [3, 4]]; const flatArr = arr.flat(); console.log(arr); // [1, 2, [3, 4]] console.log(flatArr); // [1, 2, 3, 4]
2. 只会展开数组
Array.flat() 方法只会展开数组,对于其他类型的值(比如对象、字符串、数字等),会直接返回。
const arr = [1, 2, {name: 'Tom'}, 'hello']; const flatArr = arr.flat(); console.log(flatArr); // [1, 2, {name: 'Tom'}, 'hello']
3. 可以处理稀疏数组
稀疏数组是指数组中包含 undefined 或空位的情况。Array.flat() 方法会将它们展开为 undefined。
const arr = [1, 2, , 4]; const flatArr = arr.flat(); console.log(flatArr); // [1, 2, undefined, 4]
4. 可以自定义展开深度
Array.flat() 方法的 depth 参数可以是任意非负整数,也可以是 Infinity。如果传入的是负数或者其他类型的值,会被自动转换为 0。
const arr = [1, 2, [3, 4, [5, 6]]]; const flatArr1 = arr.flat(-1); // 等价于 arr.flat(0) const flatArr2 = arr.flat(2); const flatArr3 = arr.flat(Infinity); console.log(flatArr1); // [1, 2, [3, 4, [5, 6]]] console.log(flatArr2); // [1, 2, 3, 4, 5, 6] console.log(flatArr3); // [1, 2, 3, 4, 5, 6]
总结
Array.flat() 方法可以方便地将嵌套数组展开为一维数组。在使用时需要注意不会改变原数组、只会展开数组、可以处理稀疏数组、可以自定义展开深度等几点。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66032278d10417a222f2b5af