ホームページ > 記事 > ウェブフロントエンド > jqueryベースの配列の使用
jQuery の配列処理は便利で、完全に機能します。ネイティブ JavaScript 配列 では 1 ステップで実現できない多くの関数をカプセル化します。以下は、jQuery 配列の使用方法の詳細な説明です。必要な方は参照してください
1. $.each(array, [callback]) トラバーサル [一般的に使用される]
説明: $() とは異なります。 jQuery オブジェクトを走査する each() メソッド。このメソッドは任意のオブジェクトを走査するために使用できます。 コールバック関数には 2 つのパラメータがあります。1 つ目はオブジェクトのメンバーまたは配列のインデックスで、2 つ目は対応する変数またはコンテンツです。各ループを終了する必要がある場合は、コールバック関数を返すことができます。 false、その他の戻り値は無視されます。
各トラバーサルは、通常のイベント処理では、for ループの変形ですが、for ループよりも強力です。配列では、配列のインデックスと対応する値を簡単に取得できます。例:
コードは次のとおりです:
var _mozi=['墨家','墨子','墨翟','兼爱非攻','尚同尚贤']; //本文所用到的数组, 下同 $.each(_mozi,function(key,val){ //回调函数有两个参数,第一个是元素索引,第二个为当前值 alert('_mozi数组中 ,索引 : '+key+' 对应的值为: '+val); });
ネイティブの for..in と比較すると、それぞれがより強力です。 for..in は配列を走査して対応するインデックスを返すこともできますが、値は arrName[key] を通じて取得する必要があります。
2. $.grep(array, callback, [invert]) フィルター配列 [一般的に使用]
説明: この関数は、少なくとも 2 つのパラメーターを渡します (3 番目のパラメーターは true または false)。 、フィルター関数の戻り値が反転しているため、個人的にはあまり役に立たないと思います): フィルターされる配列とフィルター関数は、要素を保持する場合は true を返し、要素を削除する場合は false を返す必要があります。さらに、フィルター関数を文字列に設定することもできます。
コードは次のとおりです:
$.grep(_mozi,function(val,key){ //过滤函数有两个参数,第一个为当前元素,第二个为元素索引 if(val=='墨子'){ alert('数组值为 墨子 的下标是: '+key); } }); var _moziGt1=$.grep(_mozi,function(val,key){ return key>1; }); alert('_mozi数组中索引值大于1的元素为: '+_moziGt1); var _moziLt1=$.grep(_mozi,function(val,key){ return key>1; },true); //此处传入了第三个可靠参数,对过滤函数中的返回值取反 alert('_mozi数组中索引值小于等于1的元素为: '+_moziLt1);
3. $.map(array,[callback]) 与えられた条件に従って配列を変換します [全般]
説明: パラメータとしての変換関数が呼び出されますこの変換関数には、変換される要素を表す引数が渡され、変換された値、null (配列から項目を削除)、または元の配列に展開された値を含む配列を返すことができます。 。
これは非常に強力なメソッドですが、一般的には使用されません。特定の条件に基づいて配列要素の値を更新したり、元の値に基づいて新しいコピー要素を展開したりできます。
コードは次のとおりです:
var _mapArrA=$.map(_mozi,function(val){ return val+'[新加]'; }); var _mapArrB=$.map(_mozi,function(val){ return val=='墨子' ? '[只给墨子加]'+val : val; }); var _mapArrC=$.map(_mozi,function(val){ //为数组元素扩展一个新元素 return [val,(val+'[扩展]')]; }); alert('在每个元素后面加\'[新加]\'字符后的数组为: '+ _mapArrA); alert('只给元素 墨子 添加字符后的数组为: '+ _mapArrB); alert('为原数组中每个元素,扩展一个添加字符\'[新加]\'的元素,返回的数组为 '+_mapArrC);
4 .$.inArray(val,array) は、値が配列内に存在するかどうかを決定します [一般的に使用されます]
説明: 配列内の最初のパラメーターの位置を決定します。 0から数えます(見つからない場合は-1を返します)。
indexOf() メソッドを覚えていますか?indexOf() は文字列の最初の出現位置を返しますが、$.inArray() は配列内で渡されたパラメータの位置を返します。同様に、見つかった場合は A 値を返します。 0 以上の値が見つからない場合は -1 を返します。これで、配列内に値が存在するかどうかを簡単に判断できるようになりました。
コードは次のとおりです:
var _exist=$.inArray('墨子',_mozi); var _inexistence=$.inArray('卫鞅',_mozi) if(_exist>=0){ alert('墨子 存在于数组_mozi中,其在数组中索引值是: '+_exist); } if(_inexistence<0){ alert('卫鞅 不存在于数组_mozi中!,返回值为: '+_inexistence+'!'); }
5 .$.merge(first,second) は 2 つの配列をマージします [一般]
説明: 返された結果は、最初の配列の内容 (最初の配列の要素) を変更します。配列 その後に 2 番目の配列の要素が続きます。このメソッドは jQuery のメソッドを使用してネイティブ concat() メソッドを置き換えますが、その機能は複数の配列を同時にマージできる concat() ほど強力ではありません。
コードは次のとおりです:
//原生concat()可能比它还简洁点 _moziNew=$.merge(_mozi,['鬼谷子','商鞅','孙膑','庞涓','苏秦','张仪']) alert('合并后新数组长度为: '+_moziNew.length+'. 其值为: '+_moziNew);
6 .$.unique(array) は配列内の重複要素をフィルターします [一般的には使用されません]
説明: 配列内の重複要素を削除します。DOM 要素配列の削除のみを処理します。ただし、文字列や数値配列は処理できません。
この方法は初めて知りましたが、とても便利な方法だと思います。しかし、よく見てみると、DOM 要素のみを処理でき、その機能は 20% オフであることがわかります。そのため、あまり使われない要素として定義しましたが、少なくとも私はjQueryを使い始めてからは使っていません。
コードは次のとおりです:
var _h2Arr=$.makeArray(h2obj); //将数组_h2Arr重复一次 _h2Arr=$.merge(_h2Arr,_h2Arr); var _curLen=_h2Arr.length; _h2Arr=$.unique(_h2Arr); var _newLen=_h2Arr.length; alert('数组_h2Arr原长度值为: '+_curLen+' ,过滤后为: '+_newLen +' .共过滤 '+(_curLen-_newLen)+'个重复元素')
7. $.makeArray(obj) 配列のようなオブジェクトを配列に変換します [一般的には使用されません]
説明: 配列のようなオブジェクトを配列のようなオブジェクトに変換します。オブジェクトには length 属性があり、そのメンバーには 0 から length-1 までのインデックスが付けられます。
これは冗長なメソッドです。全能の $ にはすでにこの関数が含まれています。 jQuery 公式サイトの説明は非常に曖昧です。実際には、配列のようなオブジェクト (getElementsByTagName で取得した要素オブジェクトのコレクションなど) を配列オブジェクトに変換します。
コードは次のとおりです:
var _makeArr=$.makeArray(h2obj); alert('h2元素对象集合的数据 类型转换 为: '+_makeArr.constructor.name);//输出Array
8. $(dom).toArray() はすべての DOM 要素を配列に復元します [一般的には使用されません]
説明: jQuery コレクション内のすべての DOM 要素を配列に復元します。これは、$.makeArray と同じくらい冗長だとさえ思います。コードは次のとおりです:
var _toArr=$('h2').toArray(); alert('h2元素集合恢复后的 数据类型 是: '+_toArr.constructor.name);
以上がjqueryベースの配列の使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。