文章目录

  • 一、前言
  • 二、实现
    • 2.1 concat
    • 2.2 for循环
    • 2.3 apply
    • 2.4 ...拓展符
  • 三、拓展阅读

一、前言

项目开发过程中,将两个数组合并成为一个的情况十分常见。比如:

var a = [1,2,3];
var b = [4,5,6];

有两个数组a、b,需求是将两个数组合并成一个。实现方法如下:

二、实现

2.1 concat

ES5Array对象提供了一个叫concat()方法,连接两个或更多的数组,并返回结果。

var c = a.concat(b); //c=[1,2,3,4,5,6];

这里有一个问题,concat方法连接a、b两个数组后,a、b两个数组的数据不变,同时会返回一个新的数组。这样当我们需要进行多次的数组合并时,会造成很大的内存浪费,如果是数据量比较小的时候,还可以勉强用,如果数据量大的时候,这个就不妥了,所以这个方法肯定不是最好的。

2.2 for循环

大致思路是:遍历其中一个数组,把该数组中的所有元素依次添加到另外一个数组中。

for( var i in b)
{a.push(b[i]);
}

这样的写法可以解决第一种方案中对内存的浪费,但是会有另一个问题:丑!这么说不是没有道理,如果能只用一行代码就搞定,岂不快哉~

2.3 apply

函数的apply方法有一个特性,那就是func.apply(obj,argv)argv是一个数组。所以我们可以利用这点,直上代码:

a.push.apply(a,b);

调用a.push这个函数实例的apply方法,同时把a,b当作参数传入,这样a.push这个方法就会遍历b数组的所有元素,达到合并的效果。

这里可能有点绕,我们可以把b看成[4,5,6],变成这样:

a.push.apply(a,[4,5,6]);

然后上面的操作就等同于:

a.push(4,5,6);

这样就很清楚了!

另外,还要注意两个小问题:

1)以上3种合并方法并没有考虑过a、b两个数组谁的长度更小。所以好的做法是预先判断a、b两个数组哪个更大,然后使用大数组合并小数组,这样就减少了数组元素操作的次数!2)有时候我们不希望原数组(a、b)改变,这时就只能使用`concat`了。

2.4 …拓展符

ES6 提供了拓展符 实现数组合并。

var array_1 = ['reese','root','fusco'];
//["finch", "shaw", "bear", "reese", "root", "fusco"]
var array_2 =['finch','shaw','bear',...array_1];

三、拓展阅读

  • 《Vue进阶(幺叁贰):ES实现数组合并》

Vue进阶(贰零壹):JS合并两个数组方法详解相关推荐

  1. 探讨JS合并两个数组的方法

    转载自  探讨JS合并两个数组的方法 我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况. 比如: var a = [1,2,3]; var b = [4,5,6]; 有两个数组a.b,需 ...

  2. js合并两个数组中同一类型的type对象

    // js合并两个数组中同一类型的type对象 // 接口返回的数据格式 [{dayAt: "2023-01-11"lastAt: "2023-01-11 14:36:3 ...

  3. matlab合并有序数组,《数组合并》JS合并两个数组的3种方法详解

    这篇文章主要介绍了JS合并两个数组的3种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一个包解决你所有的JS问题,点击获取 需要将两个数组 ...

  4. Vue进阶(幺肆捌):Vuex 辅助函数详解

    文章目录 一.前言 二.辅助函数 三.如何使用辅助函数 四.辅助函数如何去映射 vuex.store 中的属性 4.1 mapState: 把 state 属性映射到 computed 身上 4.2 ...

  5. Vue进阶(四十三):Vuex之Mutations详解

    文章目录 一.前言 二.如何使用 mutations ? 三.源码分析 四.拓展阅读 一.前言 通俗理解mutations,里面装着一些改变数据方法的集合,这是Vuex设计很重要的一点,就是把处理数据 ...

  6. oracle数据库按日期查询,关于Oracle数据库日期范围查询的两种实现方法详解,oracle详解...

    关于Oracle数据库日期范围查询的两种实现方法详解,oracle详解 Oracle数据库日期范围查询有两种方式:to_char方式和to_date方式,接下来我们通过一个实例来介绍这一过程.我们假设 ...

  7. $merge()合并两个数组方法

    项目中用到了需要合并多个数组的方法,jq里有$.merge()方法比较好用,但是只能合并两个数组,合并多个的话需要重复使用,不可以一次性使用,这个就有点不合理啦嘿嘿! ar gallery = $(' ...

  8. 关于JS合并两个数组的方法介绍

    我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况.比如: var a = [1,2,3]; var b = [4,5,6];有两个数组a.b,需求是将两个数组合并成一个.方法如下:1.c ...

  9. JS合并两个数组的方法

    转自:微点阅读  https://www.weidianyuedu.com/content/3817386077036.html 我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况.比如: ...

最新文章

  1. java web.xml 监听器_十:JavaWeb中的监听器(一)
  2. 200 行代码解读国产数据库阿里 OceanBase 的速度源头!| CSDN 博文精选
  3. 法语:世界上最有辨识度的语言
  4. Chapter 05 绘图基础
  5. 微信小程序搜索关键字高亮和ctrl+f搜索定位实现
  6. MCS51单片机的输入/输出接口
  7. 大话设计模式之爱你一万年:第八章 结构型模式:外观(门面)模式:冬天有你不再寒冷:1.外观模式概念
  8. [Excel函数] INDEX函数 | MATCH函数
  9. 一维连续型随机变量的函数分布
  10. Flutter 全能型选手GetX —— 路由管理
  11. 全国少年乒乓球锦标赛
  12. excel每页打印标题
  13. ApkScan-PKID查壳工具+脱壳(搬运)
  14. IDEA上传项目到GitHub
  15. 使用NFC tool工具将加密门禁卡写入小米手环步骤详解
  16. Java 中的大根堆和小根堆
  17. 12岁“乖乖女”出走后割腕欲轻生 警方3小时全城搜寻
  18. 当前速度火车测试 软件,四大主流火车购票APP对比测评教程
  19. m基于MATLAB的FM调制收音机仿真实现
  20. 查询QQ号码是否在线

热门文章

  1. 角度的弧度转换,三角函数,反三角函数,弧长,扇形的面积
  2. Mysql远程访问限制ip
  3. 【计算机网络知识】广播和组播
  4. 捷豹改激光大灯 捷豹XF氙气灯升级LED灯作业
  5. 循环神经网络,注意力机制小结
  6. 监督学习中判别式模型和生成式模型的区别 | 无监督学习的生成模型GAN、VAE(生成样本)
  7. 量化交易神器tushare
  8. 【工业软件】工业软件对推进智能制造的价值
  9. node.js+vue鲜花销售网站
  10. 给html5添加极验,Django中使用极验Geetest滑动验证码过程解析