📜  展平数组 javascript (1)

📅  最后修改于: 2023-12-03 15:09:40.546000             🧑  作者: Mango

展平数组 JavaScript

展平数组指的是将具有多层嵌套的数组转换为只有一层嵌套的数组。在 JavaScript 中,我们可以使用不同方法来展平数组。

方法一:使用reduce方法

我们可以使用 reduce 方法来遍历数组并将其展平。

function flattenArray(arr) {
  return arr.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenArray(val)) : acc.concat(val), []);
}

由于 reduce 方法对 arr 的每个元素都进行一个操作,并且最终返回单个结果,因此我们可以使用 Array.isArray 递归检查数组并展平嵌套数组。

方法二:使用flat方法

从 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方法

另一个原生方法是 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 开发中一个基本的操作之一,并且有很多不同的方法可以实现这个目标。我们可以根据需要选择正确的方法,并且在确保性能的同时使代码更加清晰易懂。