javascript数组拍平方法总结

yizhihongxing

JavaScript 数组拍平方法总结

什么是数组拍平

在 JavaScript 中可以创建多重嵌套的数组,例如:

const nestedArr = [1, 2, [3, 4, [5, 6]]];

上述数组中包含了三个元素,其中第三个元素是一个嵌套的子数组,该子数组又包含了两个元素和一个嵌套的孙子数组。这样多重嵌套的数组在实际开发中很常见。

数组拍平指的是将多重嵌套的数组转化为一维数组,例如:

[1, 2, 3, 4, 5, 6]

原生方式实现数组拍平

JavaScript 语言提供了多种方式实现数组拍平,其中最简单的一种是使用 Array.prototype.flat() 方法,例如:

const nestedArr = [1, 2, [3, 4, [5, 6]]];
const flatArr = nestedArr.flat(2);
console.log(flatArr); // [1, 2, 3, 4, 5, 6]

上述代码中 Array.prototype.flat() 方法的参数指定了拍平的深度,如果不指定深度则默认拍平一层。

需要注意的是在旧版本的浏览器中不支持这个方法,可以使用第三方库 lodash 中的 _.flattenDeep() 方法代替,例如:

const nestedArr = [1, 2, [3, 4, [5, 6]]];
const flatArr = _.flattenDeep(nestedArr);
console.log(flatArr); // [1, 2, 3, 4, 5, 6]

自定义函数实现数组拍平

如果想写一个自己的函数实现数组拍平,可以使用递归思想,例如:

function flat (arr) {
  let result = [];
  for (let i = 0; i < arr.length; i++) {
    if (Array.isArray(arr[i])) {
      result = result.concat(flat(arr[i]));
    } else {
      result.push(arr[i]);
    }
  }
  return result;
}

const nestedArr = [1, 2, [3, 4, [5, 6]]];
const flatArr = flat(nestedArr);
console.log(flatArr); // [1, 2, 3, 4, 5, 6]

上述代码中,flat() 函数使用递归的方式实现数组拍平,当遇到子数组时会递归调用自身。

下面使用另一个例子说明,例如:

const nestedArr = [1, [2, 3, [4, 5]], 6, [7, [8, [9]]]];
const flatArr = flat(nestedArr);
console.log(flatArr); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

上述代码中的 nestedArr 数组包含了四个元素,其中包含多层嵌套的子数组,通过调用 flat() 函数可以将其转化为一维数组。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript数组拍平方法总结 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JavaScript类型系统之基本数据类型与包装类型

    JavaScript类型系统之基本数据类型与包装类型 在JavaScript中,数据类型可以分为两类:基本数据类型和引用数据类型。其中,基本数据类型(primitive data type)包括:Number、String、Boolean、null和undefined,而引用数据类型(reference data type)则包括:Object、Array、…

    JavaScript 2023年6月10日
    00
  • 微信小程序登录会话密钥session失效解决方案

    下面是关于微信小程序登录会话密钥session失效的解决方案的完整攻略。 问题描述 在微信小程序中,用户登录后会产生一个会话密钥session,用于后续的请求验证和用户信息获取。然而,由于多种原因,会话密钥session可能会失效,导致用户需要重新登录。具体来说,会话密钥session失效的主要原因包括: 会话时效。微信小程序规定,每个会话密钥session…

    JavaScript 2023年6月11日
    00
  • Python 功能和特点(新手必学)

    Python 功能和特点(新手必学) Python 是一种高级编程语言,具有简单易学、开发效率高等特点,非常适用于数据分析、机器学习、人工智能等领域。下面详细讲解 Python 的功能和特点。 功能 语法简单易学 Python 的语法非常简单,类似于英语,易于理解和记忆。以下是一个简单的 Python 程序,输出 “Hello World!”。 print(…

    JavaScript 2023年5月28日
    00
  • JavaScript实现时间范围效果

    实现时间范围效果可以帮助用户快速选择日期,常用于预定、筛选等场景。下面是实现时间范围效果的完整攻略,让我们逐步来实现。 第一步:引入依赖 我们需要引入一个 JavaScript 的日期选择器库。其中,moment.js 是一个自动解析、验证、操作和显示日期和时间的库,非常常用且功能强大。 <!– 引入moment.js和相关的CSS样式表文件 –&…

    JavaScript 2023年5月27日
    00
  • 用jQuery将JavaScript对象转换为querystring查询字符串的方法

    将JavaScript对象转换为querystring查询字符串是前端开发中非常常用的操作之一,可以通过jQuery的$.param()方法实现。 具体步骤如下: 1.创建一个JavaScript对象,用于测试示例。 例如,现在有一个名为person的JavaScript对象: var person = { name: "Tom", ag…

    JavaScript 2023年5月27日
    00
  • 提交表单时执行func方法实现代码

    当用户提交表单时,我们可以使用JavaScript中的addEventListener方法或者onsubmit属性来绑定一个回调函数来实现代码逻辑。以下是实现步骤: 1. 编写HTML表单 首先需要编写一个HTML表单: <form id="myForm"> <input type="text" na…

    JavaScript 2023年6月10日
    00
  • Javascript读取json文件方法实例总结

    我们来详细讲解一下“Javascript读取json文件方法实例总结”。 什么是 JSON 文件 JSON 是一种轻量级的数据交换格式,使用易读易写的文本格式,可用于保存和传输结构化数据。JSON 中的键值对使用双引号包围,各个键值对之间用逗号分隔,而整个对象则使用花括号包围。以下是一个 JSON 对象的例子: { "name": &qu…

    JavaScript 2023年5月27日
    00
  • JavaScript的Proxy对象详解

    JavaScript的Proxy对象详解 什么是Proxy对象 Proxy 是 ES6 新增的语法,它允许你在外部控制对象和函数的访问行为。可以说,Proxy 是以对象为基础的 元编程 ,使得我们可以编写出更加可复用,更加通用的 Javascript 代码。 创建一个Proxy对象 可以使用 new 操作符来创建一个 Proxy 对象,其中第一个参数为需要代…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部