Javascript连接多个数组不用concat来解决


Posted in Javascript onMarch 24, 2014

第一种方法就是大家熟知的concat,但是这个方法有一个确定就是该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

如果只是想把一个新数组的元素加到现有数组中,我们还要为其重新赋值,其实存在有一点点资源的浪费。简单的说,我们要为新创建的数组分配新的内存空间,并且把arr1重新指向这个新内存地址,那么原来那个内存中的数组呢,嘿嘿 那就要看浏览器能不能正确回收喽。

如下例:

var arr1 = [1,2,3]; 
var arr1 = arr1.concat([4,5]);

那么我们有没有什么好办法来避免这个资源消耗呢?

这里可以使用Javascript原生的apply方法来实现,首先看如下代码:

var arr1= [1,2,3]; 
arr1.push.apply(arr1,[4,5]);

这样就搞定了,此方法巧妙的运用了apply方法的特性(第二个参数是数组类型的多个)解放了push方法, push方法从本身只能传递多个值变成了可以传递数组, 上述代码其实就等价于
arr1.push(4,5);

这样arr1还是那个arr1,只是内存进行了重写而已,没有重定向和不必要的内存溢出。
Javascript 相关文章推荐
分享27款非常棒的jQuery 表单插件
Mar 28 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
Jul 30 Javascript
jQuery实现自动调整字体大小的方法
Jun 15 Javascript
vue2.0 根据状态值进行样式的改变展示方法
Mar 13 Javascript
vue响应式系统之observe、watcher、dep的源码解析
Apr 09 Javascript
原生js实现抽奖小游戏
Jun 27 Javascript
vue+moment实现倒计时效果
Aug 26 Javascript
layui输入框中只允许输入整数的实现方法
Sep 18 Javascript
vue 解决遍历对象显示的顺序不对问题
Nov 07 Javascript
基于vue和bootstrap实现简单留言板功能
May 30 Javascript
jQuery加PHP实现图片上传并提交的示例代码
Jul 16 jQuery
vue 数据双向绑定的实现方法
Mar 04 Vue.js
jqeury-easyui-layout问题解决方法
Mar 24 #Javascript
让table变成exls的示例代码
Mar 24 #Javascript
JQuery 图片滚动轮播示例代码
Mar 24 #Javascript
JS中判断null、undefined与NaN的方法
Mar 24 #Javascript
jquery高级编程的最佳实践详解
Mar 23 #Javascript
js 判断浏览器使用的语言示例代码
Mar 22 #Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
Mar 22 #Javascript
You might like
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
2013/03/06 PHP
php过滤html标记属性类用法实例
2014/09/23 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
2018/05/12 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
比较详细的javascript对象的property和prototype是什么一种关系
2007/08/06 Javascript
js常见表单应用技巧
2008/01/09 Javascript
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
2010/03/15 Javascript
IE6中使用position导致页面变形的解决方案(js代码)
2011/01/09 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
js style动态设置table高度
2014/10/21 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
浅谈python for循环的巧妙运用(迭代、列表生成式)
2017/09/26 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
pytorch自定义初始化权重的方法
2019/08/17 Python
python实现静态服务器
2019/09/05 Python
python区分不同数据类型的方法
2019/10/14 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
Python如何读写CSV文件
2020/08/13 Python
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
计算机系毕业生推荐信
2013/11/06 职场文书
六十岁生日答谢词
2014/01/10 职场文书
《在大海中永生》教学反思
2014/02/24 职场文书
中专生毕业个人鉴定
2014/02/26 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
计划生育责任书
2015/05/09 职场文书
西游降魔篇观后感
2015/06/15 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书
Go timer如何调度
2021/06/09 Golang