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 相关文章推荐
解javascript 混淆加密收藏
Jan 16 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
Jan 24 Javascript
在子窗口中关闭父窗口的一句代码
Oct 21 Javascript
js实现遮罩层划出效果是生成div而不是显示
Jul 29 Javascript
jquery分割字符串的方法
Jun 24 Javascript
JavaScript文本框脚本编写的注意事项
Jan 25 Javascript
在页面中输出当前客户端时间javascript实例代码
Mar 02 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
Sep 05 Javascript
jQuery实现动态给table赋值的方法示例
Jul 04 jQuery
在vue中使用Autoprefixed的方法
Jul 27 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
Apr 26 Javascript
JavaScript实现弹出窗口效果
Dec 09 Javascript
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
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
2013/09/29 Javascript
button没写type=button会导致点击时提交
2014/03/06 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
2016/10/10 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
Vuex实现购物车小功能
2020/08/17 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
python从ftp下载数据保存实例
2013/11/20 Python
Python列表append和+的区别浅析
2015/02/02 Python
Python yield与实现方法代码分析
2018/02/06 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
应届生高等护理求职信
2013/10/12 职场文书
企业厂长岗位职责
2013/12/17 职场文书
《春到梅花山》教学反思
2014/04/16 职场文书
小学优秀教师材料
2014/12/15 职场文书
nginx常用配置conf的示例代码详解
2022/03/21 Servers
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers