Javascript连接多个数组不用concat来解决
更新时间:2014年03月24日 16:44:21 作者:
这篇文章主要介绍了不用concat解决Javascript连接多个数组,需要的朋友可以参考下
第一种方法就是大家熟知的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,只是内存进行了重写而已,没有重定向和不必要的内存溢出。
如果只是想把一个新数组的元素加到现有数组中,我们还要为其重新赋值,其实存在有一点点资源的浪费。简单的说,我们要为新创建的数组分配新的内存空间,并且把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,只是内存进行了重写而已,没有重定向和不必要的内存溢出。
您可能感兴趣的文章:
- JS数组合并push与concat区别分析
- js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
- JavaScript使用concat连接数组的方法
- JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
- JS数组方法concat()用法实例分析
- JavaScript中使用concat()方法拼接字符串的教程
- 深入理解javascript中concat方法
- javascript使用 concat 方法对数组进行合并的方法
- js采用concat和sort将N个数组拼接起来的方法
- javascript中数组的concat()方法使用介绍
- javascript concat数组累加 示例
- JS Array创建及concat()split()slice()的使用方法
- 浅谈JavaScript的push(),pop(),concat()方法
- JavaScript模拟数组合并concat
- JS数组降维的实现Array.prototype.concat.apply([], arr)
- JavaScript中concat复制数组方法浅析
- javascript数组中的concat方法和splice方法
- JavaScript的concat方法实例代码(数组连接)
相关文章
cocos creator Touch事件应用(触控选择多个子节点的实例)
下面小编就为大家带来一篇cocos creator Touch事件应用(触控选择多个子节点的实例)。小编觉得挺不错的,现在就想给大家,也给大家做个参考。一起跟随小编过来看看吧2017-09-09mockjs,json-server一起搭建前端通用的数据模拟框架教程
下面小编就为大家分享一篇mockjs,json-server一起搭建前端通用的数据模拟框架教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2017-12-12
最新评论