📅  最后修改于: 2023-12-03 15:09:40.546000             🧑  作者: Mango
展平数组指的是将具有多层嵌套的数组转换为只有一层嵌套的数组。在 JavaScript 中,我们可以使用不同方法来展平数组。
我们可以使用 reduce
方法来遍历数组并将其展平。
function flattenArray(arr) {
return arr.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenArray(val)) : acc.concat(val), []);
}
由于 reduce 方法对 arr
的每个元素都进行一个操作,并且最终返回单个结果,因此我们可以使用 Array.isArray
递归检查数组并展平嵌套数组。
从 ES2019 开始,我们可以使用 flat
方法来展平嵌套数组。这是一个原生方法,因此不需要使用额外的 JavaScript 库或函数。
const nestedArray = [1, [2, 3], [4, [5, 6]]];
const flattenedArray = nestedArray.flat(Infinity);
console.log(flattenedArray); // [1, 2, 3, 4, 5, 6]
我们还可以使用 Infinity
参数来指定需要展平的嵌套级别。
另一个原生方法是 flatMap
方法,可以将展平和映射组合成一个步骤。
const nestedArray = [[1], [2, 3], [4, [5, 6]]];
const flattenedArray = nestedArray.flatMap(x => x);
console.log(flattenedArray); // [1, 2, 3, 4, [5, 6]]
与 flat
方法不同,flatMap
方法返回新数组时保留嵌套数组。如果我们想完全展开数组,我们可以使用之前使用的方法对所有元素调用 flatMap
方法。
总之,展平数组是 JavaScript 开发中一个基本的操作之一,并且有很多不同的方法可以实现这个目标。我们可以根据需要选择正确的方法,并且在确保性能的同时使代码更加清晰易懂。