当前位置:首页 > JavaScript

flat js实现

2026-02-01 04:35:08JavaScript

在JavaScript中实现扁平化(flatten)数组操作可以通过多种方式完成,以下是几种常见的方法:

使用 Array.prototype.flat()

ES2019引入了原生方法flat(),可直接将嵌套数组扁平化。默认只展开一层,可通过参数指定深度或使用Infinity完全展开。

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

递归实现

通过递归遍历数组元素,若元素是数组则继续展开,否则收集到结果中。

function flattenDeep(arr) {
  return arr.reduce((acc, val) => 
    Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), 
  []);
}
const result = flattenDeep([1, [2, [3, [4]]]]);

迭代实现(栈)

使用栈结构非递归地展开数组,适合处理深层嵌套。

function flattenIterative(arr) {
  const stack = [...arr];
  const result = [];
  while (stack.length) {
    const next = stack.pop();
    if (Array.isArray(next)) {
      stack.push(...next);
    } else {
      result.push(next);
    }
  }
  return result.reverse();
}

使用 concat 与扩展运算符

结合concat和扩展运算符逐层展开,需多次调用直到无嵌套。

function flattenOneLevel(arr) {
  return [].concat(...arr);
}
// 多次调用直到完全扁平化

性能注意事项

  • 原生flat()方法性能最优,但需考虑浏览器兼容性。
  • 递归方式代码简洁,但可能栈溢出(极端深层嵌套时)。
  • 迭代方法适合处理未知深度的数组,但代码稍复杂。

根据实际需求选择方法,现代项目优先使用flat(),兼容性要求高的场景可采用递归或迭代方案。

flat js实现

标签: flatjs
分享给朋友:

相关文章

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的H…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #34…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…