jQuery 中是否有相当于http://underscorejs.org/#groupBy的内置函数?
任何解决方法?
谢谢
不。jQuery 不是为数据处理而设计的,而是为 DOM、Ajax 和 Animations 设计的——这些实用程序功能,或者内部需要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;
}, {});
}
来自链接