您的位置:首页 > Web前端 > JQuery

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架构设计与实现原理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: