当前位置:首页 > JavaScript

js实现flat

2026-02-02 08:13:02JavaScript

实现数组扁平化的方法

数组扁平化是指将嵌套的多维数组转换为一维数组。JavaScript 提供了多种实现方式,以下是常见的几种方法:

使用 Array.prototype.flat()

ES2019 引入了 flat() 方法,可以直接将数组扁平化。默认只扁平化一层,可以通过参数指定深度。

const arr = [1, [2, [3, [4]]]];
const flattened = arr.flat(Infinity); // 使用 Infinity 完全扁平化
console.log(flattened); // [1, 2, 3, 4]

递归实现

通过递归遍历数组的每个元素,如果是数组则继续递归,否则将元素加入结果数组。

js实现flat

function flatten(arr) {
  let result = [];
  arr.forEach(item => {
    if (Array.isArray(item)) {
      result = result.concat(flatten(item));
    } else {
      result.push(item);
    }
  });
  return result;
}

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

使用 reduce 实现

利用 reduce 方法遍历数组,递归处理嵌套数组。

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

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

使用 while 循环和 concat

通过循环判断数组中是否还有嵌套数组,不断展开。

js实现flat

function flatten(arr) {
  while (arr.some(item => Array.isArray(item))) {
    arr = [].concat(...arr);
  }
  return arr;
}

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

使用 Generator 实现

通过生成器函数递归遍历数组,生成扁平化后的序列。

function* flatten(arr) {
  for (const item of arr) {
    if (Array.isArray(item)) {
      yield* flatten(item);
    } else {
      yield item;
    }
  }
}

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

使用 toString 方法(仅适用于数字或字符串数组)

将数组转换为字符串后再解析,仅适用于元素为数字或字符串的情况。

function flatten(arr) {
  return arr.toString().split(',').map(Number);
}

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

注意事项

  • 如果数组包含非数组对象(如 null{}),需要额外处理。
  • 递归方法可能导致栈溢出,对于极深层级的数组需谨慎使用。
  • flat() 是 ES2019 新增方法,需考虑兼容性问题。

标签: jsflat
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现基础轮播效果 使用HTML结构创建轮播容器和图片元素: <div class="carousel"> <div class="carousel-inner">…

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="sli…