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

yizhihongxing

当我们需要将一个多维数组(嵌套数组)转换成一维数组时,我们需要用到数组扁平化操作。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日

相关文章

  • JavaScript实现删除,移动和复制文件的方法

    下面就是“JavaScript实现删除、移动和复制文件的方法”的完整攻略。 删除文件 使用 XMLHttpRequest 对象和 AJAX 可以先准备一个简单的页面,其中有一个表单用来选择要删除的文件或文件夹,还有一个删除按钮用来触发删除操作。然后在需要执行删除的那个按钮上添加一个点击事件,将所选中的文件或文件夹通过 AJAX 上传到服务器端进行删除。代码如…

    JavaScript 2023年5月27日
    00
  • JavaScript中的object转换函数toString()与valueOf()介绍

    介绍 JavaScript 中的 object 转换函数 toString() 与 valueOf(),可能需要先了解一下 object 和函数的基本概念。 什么是 object? 在 JavaScript 中,object 是最常用的数据类型之一,它可以被用来存储和组织数据以及代码。你可以将其想象成一个容器,容器内可以存储各种类型的数据,包括字符串、数字、…

    JavaScript 2023年6月10日
    00
  • js中实例与对象的区别讲解

    JS中,实例和对象都是面向对象编程的概念,但它们有着不同的含义。 实例与对象的区别 对象 对象是JS中非常重要且常见的数据类型。它可以是一个简单的数据类型,也可以是一个数组,函数等组合类型,甚至可以是由其他对象组成的复杂类型。每个对象都有一个自己的属性和方法,这些方法和属性可以被对象访问和修改。以下是一个简单对象的例子: let person = { nam…

    JavaScript 2023年5月27日
    00
  • Bootstrap Multiselect 常用组件实现代码

    Bootstrap Multiselect 是基于 Bootstrap 样式的多选下拉列表组件,并提供了丰富的 API 以支持开发者进行定制化的配置。下面我将向你介绍如何使用 Bootstrap Multiselect,以及常用组件实现代码的完整攻略。 一、安装 Bootstrap Multiselect Bootstrap Multiselect 的最新版…

    JavaScript 2023年6月11日
    00
  • JavaScript实现复选框全选功能

    JavaScript实现复选框全选功能的方法有很多,其中一种常用的方法是使用jQuery库的实现方式。下面我来详细讲解一下该方法的步骤。 步骤 1. 引入jQuery库文件 在HTML代码的头部引入jQuery库文件,例如: <script src="https://code.jquery.com/jquery-3.6.0.min.js&qu…

    JavaScript 2023年6月11日
    00
  • Javascript中的几种URL编码方法比较

    当需要在Javascript代码中处理URL时,会涉及到URL编码的问题。Javascript中有多种URL编码方法可供选择,本攻略将详细讲解这些方法的使用方式以及比较优劣。 1. encodeURIComponent和encodeURI 使用encodeURIComponent和encodeURI两个方法可以将URL编码为可传输的格式。 1.1 测试示例 …

    JavaScript 2023年5月20日
    00
  • Ajax的使用四大步骤

    当我们需要在不刷新网页的情况下更新部分数据时,可以采用Ajax技术。Ajax是Asynchronous JavaScript And XML的简称,其核心是通过JavaScript和XML来实现异步通信。下面是Ajax的使用四大步骤的完整攻略。 1. 创建XMLHttpRequest对象 在JavaScript中,创建XMLHttpRequest对象的方式如…

    JavaScript 2023年6月11日
    00
  • JavaScript 创建对象

    下面是 JavaScript 创建对象的完整攻略: 1. 对象创建方式 JavaScript 有三种创建对象的方式: 1.1. Object 构造函数方式 使用 Object 构造函数创建对象时,需要通过 new 操作符创建一个对象实例。 let obj = new Object(); obj.name = ‘张三’; obj.age = 18; 1.2. …

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