答案 0 :(得分:7)
没有。 jQuery不是用于数据处理,而是用于DOM,Ajax和动画 - 那些内部需要的each
map
,grep
或{{1}}。
使用Underscore,它没有任何问题!如果您不想加载整个脚本,可以轻松地将utility functions复制到您需要的任何位置。不要忘记在其来源上添加评论。
答案 1 :(得分:2)
以下是squint's native Javascript answer的 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');
});
答案 2 :(得分:0)
我已经使用了它,它对我来说很完美
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;
}, {});
}
来自Link