js--引用类型Array--2.数组合并几种方法
2016-05-05 10:49
951 查看
js数组也是很重要的一块,所以准备对数组的操作等写一个系列。
1.第一部分是二元数组的基础知识。
http://blog.csdn.net/github_34514750/article/details/51049935
2.本部分讲解数组的几种合并方法优劣比较
3.第三部分讲解数组简单复制和深度复制
http://blog.csdn.net/github_34514750/article/details/56677750
根据第一部分的基础知识,我们最容易想到的是concat、push、unshift
如图:
问题
1.js引擎都会有拷贝数据长度的限制,若数组很大,肯定会超出push或unshift允许调用堆栈的限制,则可以结合splice使用
1.第一部分是二元数组的基础知识。
http://blog.csdn.net/github_34514750/article/details/51049935
2.本部分讲解数组的几种合并方法优劣比较
3.第三部分讲解数组简单复制和深度复制
http://blog.csdn.net/github_34514750/article/details/56677750
根据第一部分的基础知识,我们最容易想到的是concat、push、unshift
1.concat合并数组
concat是生成一个新数组,内存则是a和b的和var a = [1,2,3], b = ["ab","cd","ef"], c = a.concat(b); console.log(c);
如图:
2.push循环合并数组
push是一个数组的内容加入到另一个中var a = [1,2,3], b = ["ab","cd","ef"], i, len; for(i = 0,len = b.length;i < len;i++) { a.push(b[i]); } b = null;//b可以清空
3.unshift循环合并数组
若a比较少,则希望a插入到b前边,这样节省时间var a = [1,2,3], b = ["ab","cd","ef"], i; for(i = a.length-1;i >= 0;i--) { b.unshift(a[i]); } console.log(b); a = null;//a可以清空
4.reduce合并数组
var a = [1,2,3], b = ["ab","cd","ef"], i; b.reduce(function(prev,curr){ prev.push(curr); return prev; },a); console.log(a);
5.reduceRight合并数组
var a = [1,2,3], b = ["ab","cd","ef"], i; a.reduceRight(function(prev,curr){ prev.unshift(curr); return prev; },b); console.log(b);
6.用Array.prototype.push.apply合并数组
var a = [1,2,3], b = ["ab","cd","ef"]; // call和apply可以用来重新定义函数的执行环境,apply中的第一个参数a用于指定将要调用函数push的对象,参数是b // 其实就是在a的上下文环境中执行Array.prototype.push函数,参数是b Array.prototype.push.apply(a,b); console.log(a);
7.用Array.prototype.unshift.apply合并数组
var a = [1,2,3], b = ["ab","cd","ef"]; // 其实就是在b的上下文环境中执行Array.prototype.unshift函数,参数是a Array.prototype.unshift.apply(b,a); console.log(b);
问题
1.js引擎都会有拷贝数据长度的限制,若数组很大,肯定会超出push或unshift允许调用堆栈的限制,则可以结合splice使用
function combineInto(a,b) { var len = a.length; for (var i=0; i < len; i=i+5000) { b.unshift.apply( b, a.slice( i, i+5000 ) ); } }
相关文章推荐
- 深入理解JavaScript系列
- javascript的 replace() 方法的使用讲解
- JavaScript实现返回上一页面并刷新的小例子
- 最近改js学到的一些心得
- JavaScript学习总结(九)——Javascript面向(基于)对象编程
- JavaScript学习总结(八)——JavaScript数组
- JavaScript学习总结(七)——JavaScript函数(function)
- JavaScript学习总结(六)——JavaScript判断数据类型总结
- JavaScript学习总结(五)——Javascript中==和===的区别
- JavaScript跨域总结与解决办法
- JavaScript学习总结(四)——逻辑OR运算符详解
- javascript对象属性为空的判断
- jsm使用
- JS数组方法汇总
- fiddler 挂载 JS文件
- UMeditor图片上传失败之jsp与.NET版本(转载+原创)
- Andorid Json解析大全
- js对联广告代码,兼容性高
- JSP不加载缓存
- 使用Gson解析复杂的json数据