JS 合并数组的三大方式

JS 合并数组的三大方式数组是表示索引项的有序集合的数据结构 对多个数组执行的一个常见操作是合并 将 2 个或多个数组合并成包含合并数组的所有项的更大数组 例如 有两个数组 1 2 和 5 6 然后合并这些数组得到 1 2 5 6 在这篇文章中 你会发现在 JavaScript 中合并数组的 3 种方法 2 种不可变的 合并后创建一个新数组 和 1 种可变的 合并到一个数组中 1 数组的不可变合并 1 1 使用扩展操作符进行合并如果您想知道一种在 JavaScript 中合并数组的好方法 那么请记住使用扩展操作符进行合并 在数组字

在这里插入图片描述

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

对多个数组执行的一个常见操作是合并——将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)方法。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198400.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午3:18
下一篇 2026年3月26日 下午3:18


相关推荐

  • 12306可以设置抢票吗_抢票软件哪个成功率高

    12306可以设置抢票吗_抢票软件哪个成功率高#-*-coding:utf-8-*-importrequestsimportreimportbase64fromcodesimportappimportjsonimporturllib.parseimporttimeimportdatetimesession=requests.Session()headers={‘User-Agent’:’Moz…

    2025年12月12日
    3
  • Vue快速入门

    Vue快速入门迫于无奈还得学下前端的东西,虽然本人学的是后端,但是很早也就听过了Vue很火,所以这里花一天时间学一些基础的Vue知识,至少保证能看懂吧!

    2022年5月4日
    45
  • 解决P2P传输瓶颈

    解决P2P传输瓶颈随着嵌入式技术这几年的迅速发展,在个人电脑平台上正显示出强大市场需求的流媒体技术,目前逐渐有向嵌入式平台转移的趋势。个人便携化、家电化的媒体消费需求,为这次平台的转移提供了市场契机。IPTV正是在这场消费革命中处在风口浪尖的焦点。业内大多认为IPTV蕴含了巨大的商业利益,但至今仍鲜有涉足者,其中原因之一是网络速度问题。本文介绍了对等网络技术,即点对点(P2P)技术,将其应用到IPTV网络传输中,可

    2022年7月16日
    13
  • 矩阵内积运算

    矩阵内积运算设有矩阵 A a1 a2 a3 a4 和矩阵 B b1 b2 b3 b4 那么矩阵 A 与 B 的内积为 内积 a1xb1 a2xb2 a3xb3 a4xb4

    2026年3月19日
    2
  • 《计算机网络》复习笔记

    《计算机网络》复习笔记《计算机网络》复习笔记本复习笔记基于谢希仁的《计算机网络》第五版教材整理。计算机网络复习笔记绪论1计算机网络2因特网概述3互联网的组成P84计算机网络的类别P175计算机网络的体系结构P25物理层1物理层下的传输媒体2关于信道的几个基本概念3信道复用技术数据链路层1使用点对点信道的数据链路层2点对点协议PPPP703

    2022年5月8日
    54
  • WEB功能测试说明

    WEB功能测试说明

    2022年1月10日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号