JS 合并数组的三大方式

【JavaScript】JS涉及数组合并时所用到的方法 到此关于JavaScript数组合并的8种常见方法介绍就结束了,更多关于JS算法刷题常用知识点后续还会更新,在阅读过程中如若有误,劳请指正; 阅读详情

在这里插入图片描述

数组是表示索引项的有序集合的数据结构。

对多个数组执行的一个常见操作是合并——将2个或多个数组合并成包含合并数组的所有项的更大数组。

例如,有两个数组[1,2]和[5,6],然后合并这些数组得到[1,2,5,6]。

在这篇文章中,你会发现在JavaScript中合并数组的3种方法:2种不可变的(合并后创建一个新数组)和1种可变的(合并到一个数组中)。

1. 数组的不可变合并

1.1使用扩展操作符进行合并

如果您想知道一种在JavaScript中合并数组的好方法,那么请记住使用扩展操作符进行合并。

在数组字面量中写入两个或更多带有扩展操作符…前缀的数组,JavaScript将创建一个合并所有这些数组的新数组:

const mergeResult = [...array1, ...array2];

例如,让我们合并两个数组heroes和villains:

const heroes = ['Batman', 'Superman'];
const villains = ['Joker', 'Bane'];

const all = [...heroes, ...villains];

console.info(all); // ['Batman', 'Superman', 'Joker', 'Bane']

const all = [...heros, ...villains] 创建一个合并了heroes和villains数组的新数组。

数组字面量中合并数组的顺序很重要:合并数组中的项按照数组在字面量中出现的顺序插入。

例如,让我们在合并的数组中把villains列表放在heroes列表之前:

const heroes = ['Batman', 'Superman'];
const villains = ['Joker', 'Bane'];

const all = [...villains,  ...heroes];

all; // ['Joker', 'Bane', 'Batman', 'Superman']

扩展操作符方法允许同时合并2个甚至更多数组:

const mergeResult = [...array1, ...array2, ...array3, ...arrayN];

1.2使用array.concat()方法进行合并

如果你喜欢用函数方式合并数组,那么你可以使用array1.concat(array2)方法:

const mergeResult = array1.concat(array2);

或者使用另一种形式:

const mergeResult = [].concat(array1, array2);

array.concat()方法不会改变调用它的数组,而是返回一个具有合并结果的新数组。例如:

const heroes = ['Batman', 'Superman'];
const villains = ['Joker', 'Bane'];

const all1 = heroes.concat(villains);
const all2 = [].concat(heroes, villains);

all1; // ['Batman', 'Superman', 'Joker', 'Bane']
all2; // ['Batman', 'Superman', 'Joker', 'Bane']

heroes.concat(villains)和[].Concat (heroes, villains)返回一个新数组,其中heroes和villains数组被合并。

concat方法接受多个数组作为参数,因此你可以一次合并2个或多个数组:

const mergeResult = [].concat(array1, array2, array3, arrayN);

2. 数组的可变合并

使用扩展操作符或array.concat()执行的合并将创建一个新数组。但是,有时不想创建一个新数组,而是想将它合并到一些现有的数组中。

下面的方法执行一种可变的合并方法。

2.1使用array.push()方法进行合并

你可能已经知道array.push(item)方法将一个项压入到数组的末尾,改变了调用该方法的数组:

const heroes = ['Batman'];

heroes.push('Superman');

heroes; // ['Batman', 'Superman']

多亏了这个array.push (item1,item2,…, itemN)接受多个项来推入,你可以使用应用于参数的扩展操作符(换句话说,执行合并)来推入整个数组:

array1.push(...array2);

例如,让我们将villains合并到heroes数组中:

const heroes = ['Batman', 'Superman'];
const villains = ['Joker', 'Bane'];

heroes.push(...villains);

heroes; // ['Batman', 'Superman', 'Joker', 'Bane']

heroes.push(…villains)将villains数组中的所有元素推到heroes数组的末尾——执行一个可变的合并操作。heroes数组发生了变化。

总结

JavaScript提供了多种合并数组的方法。

可以使用扩展操作符[…]array1,……Array2],或函数方式[].Concat (array1, array2)合并2个或多个数组。这些方法是不可变的,因为合并结果存储在一个新数组中。

如果你想执行可变合并,即合并到一个数组而不创建一个新数组,那么你可以使用array1.push(…array2)方法。

Vue.js Element UI表格动态单元格合并:从原理到工程实践 在Web前端开发中,表格数据展示是管理后台的常见需求,而单元格合并则是提升数据可读性和视觉层次的关键技术。其核心原理在于通过预计算算法,将数据中具有相同或关联属性的连续行进行归并,生成一个描述每个单元格合并状态的映射表。这种数据驱动的方式,将复杂的UI渲染逻辑与业务数据解耦,带来了显著的技术价值:它不仅能实现动态、可配置的合并规则,还能通过O(1)复杂度的查找操作,在`span-method`钩子中高效应用,从而避免大数据量下的性能瓶颈。该技术广泛应用于需要清晰展示数据分组、聚合信息的场景,如订单列表按日期 阅读详情

相关推荐

数组常用的合并方法有哪些?

用于在指定位置插入新元素或删除元素,并返回被删除的元素组成的数组。用于将一个或多个元素添加到数组的末尾,并返回修改后的数组长度。用于将一个或多个元素添加到数组的开头,并返回修改后的数组长度。用于将一个数组展开,然后与其他数组或值合并。用于将多个数组或值合并为一个新数组。这些是常见的数组合并方法。

祈澈菇凉 2012

js数组合并的8种方法

在JavaScript中,有多种方法可以合并数组。下面是8种常用的方法,包括concat()、spread operator、push()、unshift()、splice()、Array.from()、Array.prototype.reduce()和ES6的Array.prototype.flat()。

一步一个脚印,踏实努力,向着目标前进 5万+

目标检测 | R-CNN、Fast R-CNN与Faster R-CNN理论讲解

目标检测:R-CNN、Fast R-CNN与Faster R-CNN理论讲解,根据B站up霹雳吧啦Wz总结。此文章包含R-CNN算法原理讲解、Fast R-CNN算法原理讲解、Faster R-CNN原理讲解、目标检测评价指标介绍与特征金字塔网络FPN讲解。

houjingchuan的博客 9566

JS数组合并的8种常见方法

1.ES6 解构 [...arr, ...array] 不改原数组值,生成新的数组。 2.遍历添加 array.forEach(item => { arr.push(item) }) 遍历方法:forEach、map、filter、every、for、for in、for of等。 添加方法:push(后追加)、unshift(前追加)等。 arr值改变成追加后的样子,array值不改变 3.concat arr.concat(array) 不改原数组值,生成新的..

tengxi_5290的博客 6万+

ESP32 IDF开发 应用篇⑲ 空中升级OTA

在实际产品开发过程中,在线升级可以远程解决产品软件开发引入的问题,更好地满足用户需求。OTA(空中)更新是使用 Wi-Fi 连接而不是串行端口将固件加载到 ESP 模块的过程。(1)、ESP32 的 OTA 升级有三种方式:·Arduino IDE:主要用于软件开发阶段,实现不接线固件烧写·Web Browser:通过 Web 浏览器手动提供应用程序更新模块·HTTP Server:自动使用http服务器 - 针对产品应用在三种升级情况下,必须通过串行端口完成第一个固件上传。

lu330274924的博客 3324

告别龟速下载!保姆级教程:用离线包5分钟搞定Arduino IDE的STM32开发环境(附最新库文件)

本文提供了一套完整的Arduino IDE离线配置方案,帮助开发者5分钟快速搭建STM32开发环境。通过详细的板支持包安装指南、文件校验方法和常见问题解决方案,彻底解决GitHub下载慢的问题,提升开发效率。

weixin_26802933的博客 362

JS 合并数组( 5种方法 )

在JavaScript中,合并数组有多种方法。根据需求选择合适的方法,如需不改变原数组则推荐使用 `concat()` 或扩展运算符;如果希望合并的同时修改原始数组,可以采用 `push()` 方法。另外,`Array.from()` 和 `reduce()` 方法提供了更灵活的合并场景解决方案。

大剑师兰特的GIS世界 1万+

攻防世界 misc题GFSJ1129-【您看我还有机会吗?】

我们发现了隐藏内容,一开始我以为那个英文就是flag,提交后发现不对,然后我想只有一张图片然后图片上的隐写内容又不是flag,那必定还有什么文件被隐藏了,于是我们打开VMware并启动Ubuntu,使用binwalk分析一下有没有隐藏文件,我们要在Terminal中分析,如下。我们发现里面有一个flag.txt文件,我们尝试提取里面内容,但发现又要密码,我们想起了之前图片上的隐藏内容,我们将那段英文输入(包括空格和符号,在VMware中输入密码不会有显示,你看到的就像没输入一样),然后我们看到如下。

大数据专业,关注 AI 安全与数学建模。记录 Web 安全、对抗攻击、隐私保护等安全实践,以及从经典模型到智能方法的建模思考。用数学思维理解 AI,用 AI 方法反哺安全与建模。 1092

414. 第三大的数(javascript)414. Third Maximum Number

414. 第三大的数(javascript)414. Third Maximum Number

ingenuou_的博客 142

FPGA和USB3.0通信-USB3.0 PHY介绍

可以和FPGA搭配使用的USB3.0 PHY芯片通过之前的介绍<FPGA和USB3.0通信-USB3.0协议介绍USB3.0 PHY简介首先我们需要了解PHY具体完成哪些工作以及我利...

OpenFPGA的博客 4940

17、自适应和学习索引:在线物理设计调整的新维度

本文探讨了现代数据库管理系统中自适应索引和数据库裂解的新方法,通过结合学习模型与多臂老虎机(MAB)框架,实现在线物理设计调整。文章详细介绍了自适应索引的工作原理、数据库裂解技术以及如何利用机器学习进行索引选择和优化,并讨论了MAB框架在动态调整索引结构中的应用及其实际案例。

go5gopher的博客 79

〖大前端 - 基础入门三大核心之JS篇㉕〗- JavaScript 的数组的常用方法 (二)

继上一章节,该章节我们继续学习 JavaScript 数组的剩余常用方法。

易编橙 · 终身成长社群,相遇已是上上签! 1万+

华为Ascend_toolkit在x86ubuntu安装失败报错。[WARNING] driver package is not installed. If you install in docker

这个报错发生在交叉编译配置Ascend_toolkit环境时,安装Ascend_toolkit安装包的时候发生。[Y/N]Y。

anananajiushiwo的博客 1018

JS合并拼接字符串

本文将深入探讨JavaScript中合并和拼接字符串的不同方式,并通过丰富的代码示例和实际工作中的技巧分享,帮助读者全面理解和应用这些技术。ES6引入了模板字符串(Template Literals),它允许使用反引号(`)包裹字符串,并且可以在字符串内部直接嵌入变量和表达式,这大大提高了代码的可读性和灵活性。希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身农奴把歌唱,

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 1372

zabbix系列:内存VM.MEMORY.SIZE监控之total、free、pused、available 参数说明

free -m buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的. zabbix Web total:1046/1024=1.02G Available:216/1046=20.65% zabbix参数 total- 总物理内存. free- 可用内存. active- 内存当前使用或最近使用,所以它在RAM中。 inactive- 未使用内存. wired- 被标记为始终驻留在RAM中的内...

NIO4444 5665

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

JavaScript的三大组成和数组

JavaScript的三大组成 1、JavaScript基础语法(ECMAScript) 2、JavaScript中的对象操作 (浏览器对象,Date,String,Math)…BOM(浏览器对象模型) 3、JavaScript中的DOM操作 文档对象模型的操作 获取页面元素的方式: ①通过js的DOM的方法:getElementById)():根据元素ID获取 获取页面元素,那么必须将获取的元素...

皮卡丘丘丘~~~ 615

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

JS添加数组元素

结合我的经验,灵活运用这些数组添加技巧不仅能增强你的编程能力,还能让你在面对复杂的数据操作任务时更加得心应手。随着对JavaScript语言特性的不断探索,你会发现更多创新的方式来优化你的代码实现,从而更好地满足项目需求。本文将详细介绍几种添加数组元素的方法,并探讨它们的应用场景、性能考量以及实际工作中的使用技巧。希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。方法不会改变现有的数组,而是返回一个包含已连接数组的新数组。专栏系列(点击解锁)

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 1068

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JavaScript新手必学的三大基础排序算法解析

排序算法是理解编程逻辑的核心入口,其本质是通过比较、交换与移动操作实现数据有序化。冒泡排序体现相邻比较与状态感知原理,选择排序建立已排序区/未排序区的分治思维,插入排序则模拟增量式构建的现实逻辑。这三者虽时间复杂度均为O(n²),但因结构清晰、过程可视、不依赖高级API,成为JavaScript初学者掌握数组操作、循环控制和条件判断的最佳训练载体。在小规模或近似有序场景下,插入排序仍具工程实用价值,广泛应用于UI微调、下拉菜单排序等前端高频需求。

weixin_34417183的博客 343

JavaScript的数组教程(最详细,更新至es6新语法)

数组添加元素//如果数组索引下标为3有值的话则会被覆盖掉arr[3]=45;//如果数组长度大于当前长度,则会增加到该长度,中间没有值的都为空 empty是空的意思 如果访问则是undefinedarrp[98]=1;//也可以通过length的方式就行追加数组删除元素//可以通过length进行删减数组遍历//采用for循环进行遍历i++){//for…of循环 ele 代表循环出来的每一项 arr代表数组名字//forEach。

2401_85124205的博客 362

JavaScript 三个点(...)的三大核心用法:解构、剩余参数与展开运算符

在 JavaScript 中,三个点(...)是理解现代前端开发的关键语法符号,它并非单一功能,而是根据上下文分别实现解构赋值、剩余参数收集和展开运算三种核心机制。解构赋值通过结构模板从对象或数组中精准提取字段,提升代码可读性与容错能力;剩余参数将不定数量的实参聚合成标准数组,支撑灵活的函数接口设计;展开运算符则将可迭代数据‘摊平’为独立元素,广泛应用于对象合并、数组拼接与状态不可变更新等场景。这三者共同构成 React、Vue 等框架中 props 处理、状态管理与配置合并的底层基础,掌握其语义边界与组合

weixin_33912453的博客 321

php 纯数组,PHP 数组

// 这里用数字来作为索引$myArray = array(2012, 'blue', 5, 'BMW');// 这个用关键字作为索引$myAssocArray = array('year' => 2012,'colour' => 'blue','doors' => 5,'make' => 'BMW');// This code will output "blue".ech...

weixin_39975900的博客 188

js,数据类型,数组,排序,去重,删除,增加等...(不断更新...)

一、JS中的六大数据类型 js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Undefined,Null),和一种复杂数据类型(Object)。 typeof 操作符 由于js中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字. typeof 123   //Number typeof ‘abc’  //Str...

qq_41090050的博客 455

学习笔记: JS数组

JS中的数组是弱类型的,数组中可以含有不同类型的元素。数组元素甚至可以是对象或其它数组。JS引擎一般会优化数组,按索引访问数组常常比访问一般对象属性明显迅速。数组长度范围 from 0 to 4,294,967,295(2^23 - 1) JavaScript 中的数据通常由一个数组来表示, 所以当可视化或分析数据时往往也会操作数组. 常...

weixin_33897722的博客 491

JavaScript解构、Rest与Spread:数据流操作三大核心机制

解构赋值、剩余参数(Rest)和展开运算符(Spread)是JavaScript中支撑现代前端开发的数据处理基石。它们共同构成一套声明式数据流操作系统:解构实现结构化输入提取,Rest提供弹性函数参数接口,Spread完成不可变输出重组。相比传统属性访问或arguments操作,这三者显著提升代码可读性、类型安全性和维护性,广泛应用于React/Vue状态管理、API响应解析、配置合并等高频场景。尤其在电商大促、OA表单引擎、微前端通信等复杂工程中,正确掌握其原理与边界——如解构默认值防御、Rest参数位置

weixin_30776273的博客 359

js中函数的三大方法:bind,call,apply

函数的三大方法:bind,call,applybindcall bind bind方法可以接受n个参数,即bind(参数1,参数2,。。。。。)。 参数1:改变当前调用函数中this的指向,指向参数1。 参数2。。。:会合并原函数的参数,然后一起再次穿进去,原函数中的参数位置会向后移动。 特点:bind方法执行之后,得到了一个改变了this指向之后的全新函数,新函数必须再次被调用,才能执行。 例1...

weixin_44279475的博客 280
上一篇: 给我5分钟,教你写出干净清爽的 React 代码
下一篇: 一文彻底搞懂 JS 中的基础类型和引用类型
蟹蟹蟹风流
蟹蟹蟹风流 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域 领域专家: 前端开发技术领域 领域专家: 前端开发技术领域
博客等级 码龄11年 3万+粉丝 396原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蟹蟹蟹风流

期望和你分享一杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值