更新时间:2023-08-23 08:12:04
这是一个通用函数:
function groupBy(ary, keyFunc) {
var r = {};
ary.forEach(function(x) {
var y = keyFunc(x);
r[y] = (r[y] || []).concat(x);
});
return Object.keys(r).map(function(y) {
return r[y];
});
}
// usage:
var arr = [2,4,7,11,25,608,65,99,101,504,606,607];
g = groupBy(arr, function(x) { return Math.floor(x / 10) });
document.write(JSON.stringify(g));
对于奖金问题,只需两次申请groupBy
:
For your bonus question, just apply groupBy
twice:
function groupBy(ary, keyFunc) {
var r = {};
ary.forEach(function(x) {
var y = keyFunc(x);
r[y] = (r[y] || []).concat(x);
});
return Object.keys(r).map(function(y) {
return r[y];
});
}
var arr = [2, 4, 11,'a3', 25, 7, 'j', 'bzy4'];
g = groupBy(arr, isNaN);
g = [].concat(
groupBy(g[0], function(x) { return Math.floor(x / 10) }),
[g[1].sort()]
);
document.write(JSON.stringify(g));