当前位置:首页 > JavaScript

js实现数组扁平化输出

2026-03-02 01:39:49JavaScript

数组扁平化的概念

数组扁平化是指将多维数组转换为一维数组的过程。例如,将 [1, [2, [3, 4]], 5] 转换为 [1, 2, 3, 4, 5]

使用递归实现

递归方法可以处理任意深度的嵌套数组。通过遍历数组的每个元素,如果元素是数组则递归调用扁平化函数,否则将元素添加到结果数组中。

js实现数组扁平化输出

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

const nestedArray = [1, [2, [3, 4]], 5];
console.log(flattenDeep(nestedArray)); // [1, 2, 3, 4, 5]

使用 Array.prototype.flat()

ES2019 引入了 flat() 方法,可以直接实现数组扁平化。通过指定深度参数(默认值为 1),可以控制扁平化的层级。

const nestedArray = [1, [2, [3, [4]]], 5];
console.log(nestedArray.flat(Infinity)); // [1, 2, 3, 4, 5]

使用 reduceconcat

结合 reduceconcat 方法,可以手动实现一层扁平化。如果需要多层扁平化,可以结合递归。

js实现数组扁平化输出

function flatten(arr) {
  return arr.reduce((acc, val) => acc.concat(val), []);
}

const nestedArray = [1, [2, 3], 4];
console.log(flatten(nestedArray)); // [1, 2, 3, 4]

使用扩展运算符

扩展运算符可以展开一层数组,适合浅层扁平化场景。

const nestedArray = [1, [2, 3], 4];
const flattened = [].concat(...nestedArray);
console.log(flattened); // [1, 2, 3, 4]

使用 toString 方法

如果数组元素均为数字或字符串,可以通过 toString 方法将数组转换为字符串,再分割为数组。这种方法仅适用于特定数据类型。

const nestedArray = [1, [2, [3, 4]], 5];
const flattened = nestedArray.toString().split(',').map(Number);
console.log(flattened); // [1, 2, 3, 4, 5]

性能比较

  • flat(Infinity) 是性能最优的方案,但需支持 ES2019。
  • 递归方法通用性强,但可能因调用栈过深导致性能问题。
  • 扩展运算符和 reduce 适合浅层扁平化。

根据实际需求选择合适的方法,优先考虑代码可读性和运行环境兼容性。

标签: 数组扁平化
分享给朋友:

相关文章

java如何创建数组

java如何创建数组

创建数组的基本方法 在Java中,数组是固定大小的同类型元素集合。创建数组需要声明数组类型并初始化。 声明数组 语法格式为 数据类型[] 数组名 或 数据类型 数组名[]: int[] arr1;…

vue实现嵌套数组

vue实现嵌套数组

Vue 中实现嵌套数组的常见方法 在 Vue 中处理嵌套数组时,通常会结合 v-for 指令和响应式数据管理。以下是几种典型场景的实现方式: 基本嵌套渲染 使用多层 v-for 渲染嵌套数组结构:…

vue实现数组置顶操作

vue实现数组置顶操作

实现数组置顶的方法 在Vue中实现数组置顶操作,可以通过多种方式完成。以下是几种常见的实现方法: 使用数组的splice和unshift方法 // 假设有一个数组items const index…

vue怎样实现数组绑定

vue怎样实现数组绑定

Vue 实现数组绑定的方法 Vue 提供了多种方式来实现数组的绑定,以下是常见的几种方法: 使用 v-for 指令绑定数组 通过 v-for 指令可以遍历数组并渲染列表。语法如下: <ul&…

vue 数组响应式实现

vue 数组响应式实现

Vue 数组响应式实现原理 Vue 通过重写数组的原型方法来实现对数组操作的响应式监听。具体实现基于以下机制: 拦截数组变异方法 Vue 创建了一个继承自原生 Array 原型的对象,并重写了以下会…

react 实现数组对象排序

react 实现数组对象排序

数组对象排序方法 在React中实现数组对象排序通常涉及以下几个步骤: 使用JavaScript原生排序方法 JavaScript的Array.prototype.sort()方法可以对数组进行排序…