JS 一维数组 和 二维数组之间的相互转换

news2025/3/12 13:52:29

JS 一维数组 和 二维数组之间的相互转换

  • 二维数组转一维数组
    • 一、需求
    • 二、分析
      • 1. 方法一(ES5)
      • 2. 方法二(ES6)
      • 3. 方法三(ES6)
      • 3. 方法四(ES5)
      • 4. 特殊说明:flat()方法会移除数组中的空项。但undefined、null仍会保留。
  • 一维数组转二维数组
    • 一、需求
    • 二、分析
      • 1. 方法一,使用高阶函数

二维数组转一维数组

一、需求

在日常开发中,我们可能会遇到返回的数据不能直接使用,而数据提供者只给你传递二维数据格式的数据,这个时候就需要我们做转换,下面是总结的一些方法,可供参考

二、分析

1. 方法一(ES5)

  • 利用es5的arr.reduce(callback[, initialValue])实现
var arr1 = [[0, 1], [2, 3], [4, 5]];
var arr2 = arr1.reduce(function (a, b) { return a.concat(b)} );
// arr2 [0, 1, 2, 3, 4, 5]

2. 方法二(ES6)

  • 可以使用Array.prototype.flat()方法来将二维数组转为一维数组。
const arr2d = [[1, 2], [3, 4], [5, 6]];

const arr1d = arr2d.flat();

console.log(arr1d); // [1, 2, 3, 4, 5, 6]
 

3. 方法三(ES6)

  • 如果想要将多维数组转为一维数组,可以使用Array.prototype.flat(depth)方法,传入一个数值参数 depth 来指定要将数组展开到多少层。
const arr3d = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]];

const arr1d = arr3d.flat(2);

console.log(arr1d); // [1, 2, 3, 4, 5, 6, 7, 8]
 

3. 方法四(ES5)

  • 以上两个方法在 ES6 中引入,如果需要兼容旧版本浏览器,可以使用以下 polyfill 来实现:
if (!Array.prototype.flat) {
  Array.prototype.flat = function(depth) {
    var flattened = [];
    (function flat(array, depth) {
      for (var i = 0; i < array.length; i++) {
        if (Array.isArray(array[i]) && depth > 0) {
          flat(array[i], depth - 1);
        } else {
          flattened.push(array[i]);
        }
      }
    })(this, Math.floor(depth) || 1);
    return flattened;
  };
}
 

4. 特殊说明:flat()方法会移除数组中的空项。但undefined、null仍会保留。

var arr = [1, 2, undefined , 4, 5, null];
arr.flat(); // [1, 2, undefined , 4, 5, null]

一维数组转二维数组

一、需求

在日常开发中,我们可能会遇到返回的数据不能直接使用,而数据提供者只给你传递一维数据格式的数据,这个时候就需要我们做转换,下面是总结的一些方法,可供参考

二、分析

1. 方法一,使用高阶函数

function convertArray(arr, columns) {
  return arr.flatMap((item, index) =>
    index % columns ? [] : [arr.slice(index, index + columns)]
  );
}
convertArray([1,2,3,4,5,6],2)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/982807.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java+SpringBoot+Vue前后端分离电商应用系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

streamlit执行报错WARNING,重新安装碰到问题如何解决

streamlit执行报错WARNING&#xff0c;重新安装碰到问题如何解决 如何解决1、卸载已经安装的程序2、再次安装程序3、出现如下yinstaller 警告问题&#xff1a;4、又出现“which is not on PATH”警告。5、解决方案 发现在安装的时候有很多WARNING出现&#xff0c;但是没有但回事…

C# OpenVino Yolov8 Detect 目标检测

效果 项目 代码 using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using static System.Net.Mime.MediaT…

线性代数(六) 线性变换

前言 《线性空间》定义了空间&#xff0c;这章节来研究空间与空间的关联性 函数 函数是一个规则或映射&#xff0c;将一个集合中的每个元素&#xff08;称为自变量&#xff09;映射到另一个集合中的唯一元素&#xff08;称为因变量&#xff09;。 一般函数从 “A” 的每个元…

数字化时代,企业为什么要做数字化转型?

企业需要在数字时代进行数字化转型的原因是多方面的&#xff1a; 1.竞争优势&#xff1a;数字化转型使企业能够获得竞争优势。通过采用先进技术和数字化运营&#xff0c;他们可以提供创新的产品和服务&#xff0c;比竞争对手更快地满足客户不断变化的需求。 2.提高效率和降低…

删除单链表偶数节点

本题要求实现两个函数&#xff0c;分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下&#xff1a; struct ListNode { int data; struct ListNode *next; }; 函数接口定义&#xff1a; struct ListNode *createlist(); struct ListNode *deleteeven( …

cookies 设置过期时间

1.如何在浏览器中查看cookie过期时间 F12-Application-Cookies可以查看到网页所有设置cookie值&#xff0c; 如果设置了过期时间的cookie是可以看到过期时间的持久cookie&#xff08;persistent cookie&#xff09;&#xff0c; 没有设置过期时间的是会话cookie&#xff08;s…

Java版工程行业管理系统源码-专业的工程管理软件-提供一站式服

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管…

Linux ubuntu磁盘扩容

1.服务器添加硬盘 2.linux系统重启 reboot 3.查看分区大小 lsblk 4.分配空间 growpart /dev/sda 3 lvextend -l 100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

SpringBoot+Vue 的留守儿童系统的研究与实现,2.0 版本,附数据库、教程

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1.研究背景2. 技术栈3.系统分析4系统设计5系统的详细设计与实现5.1系统功能模块5.2管理员功能模块…

想考PMP,符合报名条件么?怎么报考?

报考PMP第一步就是了解报名条件&#xff1a; PMP考试如何报名&#xff1f; 先在PMI官网报英文报名&#xff0c;再在人才交流基金会上报中文报名以及缴费。 1、英文报名 PMP英文报名就是在PMI网站上提交对应的英文材料信息。不限时间&#xff0c;随时可以报名&#xff0c;报…

【2023高教社杯数学建模国赛】ABCD题 问题分析、模型建立、参考文献及实现代码

【2023高教社杯数学建模国赛】ABCD题 问题分析、模型建立、参考文献及实现代码 1 比赛时间 北京时间&#xff1a;2023年9月7日 18:00-2023年9月10日20:00 2 思路内容 可以参考我提供的历史竞赛信息内容&#xff0c;最新更新我会发布在博客和知乎上&#xff0c;请关注我获得最…

原生js之dom与setInterval/settimeout结合实现动画

动画效果如何实现 那么好,这次我们要讲解的就是利用dom事件和定时方法来实现一个简单的动画效果. 实现这个效果,一共分为三个步骤: 1.实现效果 2.实现点击切换位置 3.实现动画效果 样式 两个div,一个父div,一个子div,用positionrelativeabsolute定位实现左上角效果,两个按钮…

企业如何制定实施MES管理系统的预算方案

随着制造业的不断发展&#xff0c;MES生产管理系统逐渐成为制造企业提高生产效率、优化资源利用和提升质量水平的重要工具。制定实施MES管理系统的预算方案是企业在进行MES选型和实施时必须考虑的问题。本文将介绍制定实施MES管理系统预算方案的关键步骤&#xff0c;包括成本构…

数据结构与算法(六)树的入门

树的基本定义 树是我们计算机中非常重要的一种数据结构&#xff0c;同时使用树这种数据结构&#xff0c;可以描述现实生活中的很多事物&#xff0c;例如家谱、单位的组织架构、等等。 树是由n&#xff08;n>1&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做“…

wifi感知技术

前段时间&#xff0c;看到一些短视频&#xff0c;说通过家里的路由器可以远程感知到房间里是否有人。抱着将信将疑的态度&#xff0c;对这门技术进行了探索。 在我的意识里面&#xff0c;传感器一般都是专门的设备&#xff0c;无论是声光电的转换&#xff0c;还是压力&#xf…

LLM - 大模型速递 Baichuan2 快速入门

目录 一.引言 二.模型探索 1.模型下载 2.模型结构 ◆ Baichuan-1-13B 结构 ◆ Baichuan-2-13B 结构 3.模型测试 ◆ Baichuan-2-13B Chat 推理 ◆ Baichuan-2-13B 显存 4.模型量化 ◆ 在线量化 ◆ 离线量化 ◆ 量化效果 5.模型迁移 三.总结 一.引言 昨天百川新…

Vue2面试题100问

Vue2面试题100问 Vue2面试题100问1.简述一下你对Vue的理解2.声明式和命令式编程概念的理解3.Vue 有哪些基本特征4.vue之防止页面加载时看到花括号解决方案有哪几种&#xff1f;5.Vue中v-for与v-if能否一起使用&#xff1f;6.vue中v-if与v-show的区别以及使用场景7.v-on可以监听…

模板多多的BI系统,绝不在可视化大屏制作上多花一秒

如果要花大量时间去调整UI&#xff0c;哪还有时间做分析&#xff1f;别急&#xff0c;奥威BI系统上模板多得是&#xff0c;绝不会让你在可视化大屏UI设置上多花一秒。众所周知&#xff0c;在奥威BI系统上&#xff0c;零基础的人也能一键下载UI模板&#xff0c;自动套用。 奥威…

入门深度学习你不得不关注的小知识:什么是HuggingFace?

入门深度学习你不得不关注的小知识&#xff1a;什么是HuggingFace&#xff1f; 文章目录 入门深度学习你不得不关注的小知识&#xff1a;什么是HuggingFace&#xff1f;来自何方&#xff1f;核心在线平台HuggingFace Spaces社区总结 HuggingFace 是一个专注于自然语言处理&…