jQuery.merge( first, second )
2016-01-12 11:51
453 查看
本文所属图书 > jQuery技术内幕:深入解析jQuery架构设计与实现原理
本文所属图书 > jQuery技术内幕:深入解析jQuery架构设计与实现原理
方法jQuery.merge( first, second )用于合并两个数组的元素到第一个数组中。事实上,第一个参数可以是数组或类数组对象,即必须含有整型(或可以转换为整型)属性length;第二个参数则可以是数组、类数组对象或任何含有连续整型属性的对象。
方法jQuery.merge()的合并行为是破坏性的,将第二个数组中的元素添加到第一个数组中后,第一个数组就被改变了。如果希望原来的第一个数组不被改变,可以在调用jQuery.merge()之前创建一份第一个数组的副本:
var newArray = $.merge([], oldArray);
方法jQuery.merge( first, second )的相关代码如下所示:
724 merge: function( first, second ) {
725 var i = first.length,
726 j = 0;
727
728 if ( typeof second.length === "number" ) {
729 for ( var l = second.length; j < l; j++ ) {
730 first[ i++ ] = second[ j ];
731 }
732
733 } else {
734 while ( second[j] !== undefined ) {
735 first[ i++ ] = second[ j++ ];
736 }
737 }
738
739 first.length = i;
740
741 return first;
742 },
第724行:定义方法jQuery.merge( first, second ),它接受2个参数:
参数first:数组或类数组对象,必须含有整型(或可以转换为整型)属性length,第二个数组second中的元素会被合并到该参数中。
参数second:数组、类数组对象或任何含有连续整型属性的对象,其中的元素会被合并到第一个参数first中。
第725行:初始化变量i为first.length,该变量指示了插入新元素时的下标。first.length必须是整型或可以转换为整型,否则后面执行i++时会返回NaN。
第728~731行:如果参数second的属性length是数值类型,则把该参数当作数组处理,把其中的所有元素都添加到参数first中。
第733~737行:如果参数second没有属性length,或者属性length不是数值类型,则把该参数当作含有连续整型(或可以转换为整型)属性的对象,例如,{ 0:'a', 1:'b'},把其中的非undefined元素逐个插入参数first中。
第739行:修正first.length。因为参数first可能不是真正的数组,所以需要手动维护属性length的值。
第741行:返回改变后的参数first。
本文所属图书 > jQuery技术内幕:深入解析jQuery架构设计与实现原理
本文所属图书 > jQuery技术内幕:深入解析jQuery架构设计与实现原理
方法jQuery.merge( first, second )用于合并两个数组的元素到第一个数组中。事实上,第一个参数可以是数组或类数组对象,即必须含有整型(或可以转换为整型)属性length;第二个参数则可以是数组、类数组对象或任何含有连续整型属性的对象。
方法jQuery.merge()的合并行为是破坏性的,将第二个数组中的元素添加到第一个数组中后,第一个数组就被改变了。如果希望原来的第一个数组不被改变,可以在调用jQuery.merge()之前创建一份第一个数组的副本:
var newArray = $.merge([], oldArray);
方法jQuery.merge( first, second )的相关代码如下所示:
724 merge: function( first, second ) {
725 var i = first.length,
726 j = 0;
727
728 if ( typeof second.length === "number" ) {
729 for ( var l = second.length; j < l; j++ ) {
730 first[ i++ ] = second[ j ];
731 }
732
733 } else {
734 while ( second[j] !== undefined ) {
735 first[ i++ ] = second[ j++ ];
736 }
737 }
738
739 first.length = i;
740
741 return first;
742 },
第724行:定义方法jQuery.merge( first, second ),它接受2个参数:
参数first:数组或类数组对象,必须含有整型(或可以转换为整型)属性length,第二个数组second中的元素会被合并到该参数中。
参数second:数组、类数组对象或任何含有连续整型属性的对象,其中的元素会被合并到第一个参数first中。
第725行:初始化变量i为first.length,该变量指示了插入新元素时的下标。first.length必须是整型或可以转换为整型,否则后面执行i++时会返回NaN。
第728~731行:如果参数second的属性length是数值类型,则把该参数当作数组处理,把其中的所有元素都添加到参数first中。
第733~737行:如果参数second没有属性length,或者属性length不是数值类型,则把该参数当作含有连续整型(或可以转换为整型)属性的对象,例如,{ 0:'a', 1:'b'},把其中的非undefined元素逐个插入参数first中。
第739行:修正first.length。因为参数first可能不是真正的数组,所以需要手动维护属性length的值。
第741行:返回改变后的参数first。
本文所属图书 > jQuery技术内幕:深入解析jQuery架构设计与实现原理
相关文章推荐
- JQuery实现一个简单的鼠标跟随提示效果
- Jquery取得iframe子父元素互相操作的方法
- 7个jQuery最佳实践
- jQuery升级踩坑大全
- jQuery升级踩坑大全
- 如何自己开发一款js或者jquery插件
- 强大实用的jQuery幻灯片插件Owl Carousel
- Jquery学习笔记:事件处理基础介绍
- jquery实现限制textarea输入字数
- jquery插件范例代码
- 使用jquery插件layer代替window.confirm方法
- 使用jquery插件layer代替window.confirm方法
- jQuery fontIconPicker 使用
- jQuery Mobile的初识与使用
- jQuery 处理TextArea
- 原生js和jquery实现图片轮播特效
- 转载 -- jquery easyui datagrid 动态表头 + 嵌套对象属性展示
- 实例详解jQuery Mockjax 插件模拟 Ajax 请求
- jQuery中的事件
- jquery模拟实现鼠标指针停止运动事件