不用concat解决Javascript连接多个数组
2014-03-24 01:23
309 查看
第一种方法就是大家熟知的concat,但是这个方法有一个确定就是该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
如果只是想把一个新数组的元素加到现有数组中,我们还要为其重新赋值,其实存在有一点点资源的浪费。简单的说,我们要为新创建的数组分配新的内存空间,并且把arr1重新指向这个新内存地址,那么原来那个内存中的数组呢,嘿嘿 那就要看浏览器能不能正确回收喽。
如下例:
那么我们有没有什么好办法来避免这个资源消耗呢?
这里可以使用Javascript原生的apply方法来实现,首先看如下代码:
这样就搞定了,此方法巧妙的运用了apply方法的特性(第二个参数是数组类型的多个)解放了push方法, push方法从本身只能传递多个值变成了可以传递数组, 上述代码其实就等价于
这样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,只是内存进行了重写而已,没有重定向和不必要的内存溢出。
相关文章推荐
- Javascript连接多个数组不用concat来解决
- Javascript连接多个数组不用concat来解决
- JavaScript concat() 连接数组【每日一段代码90】
- JavaScript concat() 方法-连接两个或多个数组
- JavaScript使用concat连接数组的方法
- 【Javascript】数组连接concat()
- javascript 数组和对象的浅复制和深度复制 assign/slice/concat/JSON.parse(JSON.stringify())
- JavaScript 数组操作函数总结(push,pop,join,shift,unshift,slice,splice,concat)
- JavaScript引用类型之Array数组的concat()和push()方法的区别
- 利用javascript解决相关的数组问题
- 运行教学平台的主机在不用一段时间后,再次连接服务器,报告无法连接的解决办法
- 使用javaScript解决asp.net中mvc使用ajax提交数组参数的匹配问题
- JavaScript 数组 concat()方法
- JavaScript 数组操作函数总结(push,pop,join,shift,unshift,slice,splice,concat)
- 谈Javascript的数组操作方法(concat(),slice(),splice())
- JS之连接数组方法concat
- javascript 数组 深拷贝的简易方法(通过concat)
- 使用javaScript解决asp.net中mvc使用ajax提交数组参数的匹配问题
- JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
- JavaScript 数组去重的完美解决思路