JS实现数组扁平化

  1. ES6 的 Array.prototype.flat()

具体说明:

  • 默认情况下,flat() 会将数组扁平化 一层 嵌套。
  • 可以传一个参数 depth,表示扁平化的深度,默认是 1。

举例:

javascript 复制代码
const arr = [1, 2, [3, 4]];
console.log(arr.flat());  // 输出: [1, 2, 3, 4]

const arr2 = [1, 2, [3, 4, [5, 6]]];
console.log(arr2.flat());       // 默认一层扁平化,输出: [1, 2, 3, 4, [5, 6]]
console.log(arr2.flat(2));      // 扁平化两层,输出: [1, 2, 3, 4, 5, 6]

如果想完全展开所有层,可以用 Infinity 作为参数:

javascript 复制代码
console.log(arr2.flat(Infinity));  // 展开所有嵌套层
  1. ES6 之前的写法(递归实现)
javascript 复制代码
function flatten(arr) {
  let result = [];
  for (let i = 0; i < arr.length; i++) {
    if (Array.isArray(arr[i])) {
      // 递归展开
      result = result.concat(flatten(arr[i]));
    } else {
      result.push(arr[i]);
    }
  }
  return result;
}

// 测试
const arr = [1, [2, [3, 4], 5], 6];
console.log(flatten(arr)); // [1, 2, 3, 4, 5, 6]
  1. ES6 及之后的写法(用 reduce 和扩展运算符)
javascript 复制代码
const flatten = (arr) => 
  arr.reduce((acc, val) => 
    acc.concat(Array.isArray(val) ? flatten(val) : val), 
  []);

// 测试
const arr = [1, [2, [3, 4], 5], 6];
console.log(flatten(arr)); // [1, 2, 3, 4, 5, 6]
相关推荐
甄心爱学习10 小时前
CSP认证 备考(python)
数据结构·python·算法·动态规划
永远都不秃头的程序员(互关)11 小时前
Java核心技术精要:高效实践指南
java·开发语言·性能优化
xw511 小时前
npm几个实用命令
前端·npm
是Dream呀11 小时前
Python圣诞特辑:打造一棵会唱歌、会下雪的魔法圣诞树
开发语言·python·pygame
!win !11 小时前
npm几个实用命令
前端·npm
代码狂想家11 小时前
使用openEuler从零构建用户管理系统Web应用平台
前端
未来之窗软件服务11 小时前
幽冥大陆(四十一)美萍V10酒店门锁SDK C#语言仙盟插件——东方仙盟筑基期
开发语言·c#·仙盟创梦ide·东方仙盟·东方仙盟sdk·酒店智能门锁·东方仙盟 vos 智能浏览器
kyle~11 小时前
排序---常用排序算法汇总
数据结构·算法·排序算法
AndrewHZ11 小时前
【遥感图像入门】DEM数据处理核心算法与Python实操指南
图像处理·python·算法·dem·高程数据·遥感图像·差值算法