Js数组扁平化实现方法代码总汇

当我们需要将一个多维数组(嵌套数组)转换成一维数组时,我们需要用到数组扁平化操作。JavaScript中有多种实现数组扁平化的方法,本文将会总结并介绍这些方法。

基础方法——递归

递归是最基础也是最直观的方法。

function flatten(arr) {
  var result = [];

  for (var i = 0, len = arr.length; i < len; i++) {
    if (Array.isArray(arr[i])) {
      // 递归调用
      result = result.concat(flatten(arr[i]));
    } else {
      result.push(arr[i]);
    }
  }

  return result;
}

该方法中,我们对数组中的元素逐一进行遍历,当遍历到嵌套数组的时候,我们递归调用自身,将结果添加到结果数组中。

以下是该方法的应用示例:

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

拓展运算符

ES6中引入了拓展运算符...,可以非常方便地将一个多维数组转换成一维数组。

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

该方法中我们使用[].concat(...arr)的方式将多维数组转换成一维数组,当该数组中还有嵌套数组时,我们继续使用该方法进行扁平化操作。

以下是该方法的应用示例:

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

使用reduce方法

reduce()方法可以在遍历数组时累积数组中的元素,并最终返回一个值。

function flatten(arr) {
  return arr.reduce(function(prev, next) {
    return prev.concat(Array.isArray(next) ? flatten(next) : next);
  }, []);
}

该方法中,我们遍历数组中的每个元素,如果元素是嵌套数组,则递归调用flatten()函数,并将扁平化后的结果添加到累积的数组中。

以下是该方法的应用示例:

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

以上三种方法均能将多维数组扁平化为一维数组,可以根据具体应用场景选择不同的方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Js数组扁平化实现方法代码总汇 - Python技术站

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

相关文章

  • 微信小程序 前端源码逻辑和工作流详解

    微信小程序前端源码逻辑和工作流详解 微信小程序是一种轻量级的应用程序,可以方便地在微信中直接使用,不需要下载安装,用户可以直接使用。 在小程序前端的开发中,我们需要考虑的方面有很多,包括小程序的生命周期、组件、页面布局、API调用等等。本文将对微信小程序前端的源码逻辑和工作流程进行详解。 小程序前端源码逻辑 小程序的前端源码结构一般包括app.js、app.…

    JavaScript 2023年6月10日
    00
  • JavaScript获取当前url根目录(路径)

    获取当前网站的根目录或路径是在一些前端应用程序中非常有用的操作,特别是当需要以相对于网站根目录的方式链接样式表、脚本或图像时。以下是获取当前URL根目录(路径)的攻略: 方法一:使用location对象 可以使用JavaScript的location对象获取当前页面的完整URL,然后使用split()方法和push()方法来分离根目录路径。 var path…

    JavaScript 2023年6月11日
    00
  • 使用layui前端框架弹出form表单以及提交的示例

    下面就给你讲解一下使用layui前端框架弹出form表单以及提交的完整攻略。 首先,我们需要在页面中引入layui的CSS和JS文件,并且调用layui的模块: <!– 引入layui –> <link rel="stylesheet" href="../layui/css/layui.css"&…

    JavaScript 2023年6月10日
    00
  • js正则表达式常用函数详解

    JS正则表达式常用函数详解 JavaScript中利用正则表达式进行字符串匹配的操作非常常见。本文将详细讲解JavaScript中常用的正则表达式函数。 RegExp对象 在JavaScript中,正则表达式使用RegExp对象来表示。RegExp对象有两种创建方式: 直接量法 RegExp对象可以使用直接量法来创建,直接量法用斜杠(/)来定义正则表达式的模…

    JavaScript 2023年5月27日
    00
  • js对象实例详解(JavaScript对象深度剖析,深度理解js对象)

    JavaScript对象实例详解 在JS中,对象是一组无序的属性和值的集合。对象可以由对象字面量语法、构造函数语法以及Object.create等方法创建。在本文中,我们将深入剖析JS对象的原理和使用方法,为JS开发者打造最全面的对象实例攻略。 1. 理解对象属性 属性种类 对象的属性包括了数据属性和访问器属性两种。 数据属性包括以下四个特性: value:…

    JavaScript 2023年5月27日
    00
  • js对象实现数据分页效果

    实现数据分页效果,可以使用 JavaScript 中的对象技术。具体而言,可以将需要分页的数据存储在一个 JavaScript 对象中,并根据用户的分页请求,从对象中提取出需要的数据子集以供展示。 以下是实现对象数据分页效果的完整攻略: 1. 创建数据对象 创建一个 JavaScript 对象来存储需要分页的数据。对象中应该包含两个属性:data 和 pag…

    JavaScript 2023年6月10日
    00
  • 获取焦点时,利用js定时器设定时间执行动作

    获取焦点时,利用js定时器设定时间执行动作的具体步骤如下: 1. 绑定获取焦点事件 首先,需要在html中为需要获取焦点的元素添加获取焦点事件。可以使用onfocus属性或者addEventListener方法添加事件监听器。 例如,我们可以为一个input元素添加获取焦点事件监听器,代码如下: <input type="text"…

    JavaScript 2023年6月11日
    00
  • JavaScript引入方式深入解读

    JavaScript引入方式深入解读 想要在网页中使用JavaScript,我们需要将JavaScript代码引入到网页中。JavaScript有三种引入方式:内嵌、外部引入和异步引入,下面将对这三种引入方式进行详细讲解。 内嵌引入 内嵌引入是将JavaScript代码直接嵌入到HTML代码中,使用<script>标签将JavaScript代码包…

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