http://underscorejs.org/#groupByに相当する jQuery の組み込み関数はありますか?
回避策はありますか?
ありがとう
いいえ、jQuery はデータ処理用に作成されたのではなく、DOM、Ajax、およびアニメーション用に作成されました。each
map
grep
アンダースコアを使用してください。問題はありません。スクリプト全体をロードしたくない場合は、groupby
関数をソースから必要な場所に簡単にコピーできます。その起源についてコメントを追加することを忘れないでください。
これは、squint のネイティブ Javascript の回答をjQueryに適応させたものです。
$.fn.groupBy = function(predicate) {
var $array = $(this),
grouped = {};
$.each($array, function (idx, obj) {
var $obj = $(obj);
groupKey = predicate($obj);
if (typeof(grouped[groupKey]) === "undefined") {
grouped[groupKey] = $();
}
grouped[groupKey] = grouped[groupKey].add($obj);
});
return grouped;
}
この場合、HTML属性によって要素 ( ) をグループ$yourElements
name
化するための使用法:
var groupedByName = $yourElements.groupBy(function (obj) {
return $(obj).attr('name');
});
私はこれを使用しましたが、私にとっては完璧に機能しました
function groupBy(array, keyOrIterator) {
var iterator, key;
// use the function passed in, or create one
if(typeof key !== 'function') {
key = String(keyOrIterator);
iterator = function (item) { return item[key]; };
} else {
iterator = keyOrIterator;
}
return array.reduce(function (memo, item) {
var key = iterator(item);
memo[key] = memo[key] || [];
memo[key].push(item);
return memo;
}, {});
}
リンクから