JavaScript ES10 在 Array 中增加了两个新的方法:flat() 和 flatMap()。这两个方法可以更容易地处理多维数组的操作。
flat() 方法
flat() 方法将一个多维数组转化为一个一维数组,通过指定深度来控制展平的层数。该方法不改变原数组,而是返回一个新的一维数组。
语法:
array.flat([depth]);
参数:
- depth:可选,指定展开的嵌套深度,默认值为 1。
返回值:
- 一个新的一维数组。
示例:
const arr1 = [1, 2, [3, 4]]; console.log(arr1.flat()); // [1, 2, 3, 4] const arr2 = [1, 2, [3, [4, 5]]]; console.log(arr2.flat()); // [1, 2, 3, [4, 5]] const arr3 = [1, 2, [3, [4, 5]]]; console.log(arr3.flat(2)); // [1, 2, 3, 4, 5]
flatMap() 方法
flatMap() 方法通过先使用 map() 方法创建一个新数组,然后展平该数组,可以将多维数组转化为一维数组。与 flat() 方法不同的是,flatMap() 方法还可以对数组中每个元素进行处理,从而生成新的元素。
语法:
array.flatMap(function callback(currentValue[, index[, array]]) { // Return element for new Array }[, thisArg])
参数:
- callback:必需,生成新数组元素的回调函数。
- thisArg:可选,回调函数中的 this 对象。
返回值:
- 一个新的一维数组。
示例:
const arr1 = [1, 2, 3, 4]; console.log(arr1.flatMap(x => [x, x * 2])); // [1, 2, 2, 4, 3, 6, 4, 8] const arr2 = ["hello", "world", "hi"]; console.log(arr2.flatMap(x => x.split(""))); // ["h", "e", "l", "l", "o", "w", "o", "r", "l", "d", "h", "i"]
总结
- flat() 方法将一个多维数组转化为一个一维数组,可以通过传入深度来控制展平的层数;
- flatMap() 方法通过使用 map() 方法创建一个新数组,然后展平该数组,可以将多维数组转化为一维数组,并且可以对数组中每个元素进行处理。
这两个方法可以方便地操作多层嵌套的数组,并且让代码更加简洁清晰。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6497e15348841e98944e966c