1. 使用 flat() 方法:flat() 方法是 ES6 新增的一个数组方法,可以将多维数组扁平化为一维数组。例如:
const arr = [[1, 2], [3, 4], [5, 6]];
const flatArr = arr.flat();
console.log(flatArr); // [1, 2, 3, 4, 5, 6]
需要注意的是,flat() 方法默认只会将数组扁平化一层,如果需要完全扁平化,可以传入 Infinity 参数。
const arr = [[1, 2], [3, [4, 5]]];
const flatArr = arr.flat(Infinity);
console.log(flatArr); // [1, 2, 3, 4, 5]
2. 使用 reduce() 方法:可以使用 reduce() 方法将多维数组转换为一维数组。例如:
const arr = [[1, 2], [3, 4], [5, 6]];
const flatArr = arr.reduce((acc, curr) => acc.concat(curr), []);
console.log(flatArr); // [1, 2, 3, 4, 5, 6]
reduce() 方法接收一个回调函数和一个初始值。回调函数中将前一个值与当前值拼接起来,并返回给下一个回调函数处理。
在这再说一下concat方法
concat() 方法是 JavaScript 中用于连接两个或多个数组的方法,返回一个新的数组,原数组不会被改变。该方法可以接收任意数量的参数,每个参数都可以是数组或者值。
const arr1 = [1, 2, 3];
const arr2 = ['a', 'b', 'c'];
const newArr = arr1.concat(arr2);
console.log(newArr); // [1, 2, 3, "a", "b", "c"]
const arr1 = [1, 2];
const arr2 = [3, 4];
const arr3 = [5, 6];
const newArr = arr1.concat(arr2, arr3);
console.log(newArr); // [1, 2, 3, 4, 5, 6]
除了数组之外,也可以将其他类型的值与数组连接起来,这些值会被当作单独的元素添加到新数组中:
const arr1 = [1, 2];
const str = 'hello';
const newArr = arr1.concat(str, 3);
console.log(newArr); // [1, 2, "hello", 3]
需要注意的是,如果要连接的元素本身是一个数组,则会将该数组作为单独的元素添加到新数组中,而不会递归地将其展开。如果需要将数组展开再连接,可以使用扩展运算符 …
3.使用递归:可以使用递归函数遍历多维数组并将其转换为一维数组。例如:
const arr = [[1, 2], [3, 4], [5, 6]];
function flatten(array) {
return array.reduce((acc, curr) => Array.isArray(curr) ? acc.concat(flatten(curr)) : acc.concat(curr), []);
}
const flatArr = flatten(arr);
console.log(flatArr); // [1, 2, 3, 4, 5, 6]
这种方法使用递归函数遍历数组的每个元素,如果该元素也是一个数组,则继续递归处理。否则将其添加到扁平化后的数组中。