刚刚介绍到_Underscore所以这可能完全是胡说八道,但我想知道图书馆是否真的可以做我想做的事。
我有一个包含 5 个项目的对象:
Name, v2007,v2008,v2009,v2010
我只想遍历整个对象并获取 Name
中每个不同值的 SUM(非常类似于 SQL 的 GroupBy 和 SUM)。
我有以下内容:
var distincts = [];
$.each(tmp, function (key, value) {
$.each(value, function (fieldName, fieldValue) {
if (fieldName == 'Name') {
if ($.inArray(fieldValue, distincts) == -1) {
distincts.push(fieldValue);
}
}
});
});
$.each(distincts, function (a, b) {
var t = _.where(tmp, {Name: b});
var sum = _.reduce(t.v2007, function (memo, num) {
return memo + num;
}, 0)
console.log(sum);
});
它一直返回 0,事实上我不确定如何检索字段 v2011
、v2013
的 SUM,而不是将它们硬编码在其中根本不实用!
有人可以帮我一下吗,有没有一种简单的方法可以让 _Underscore 库根据名称组对所有字段(比如说,以“v”开头)求和?
最佳答案
我认为这可以满足您的需求:
var groups = _.groupBy(function(name) { return name.charAt(0) });
var sums = _.map(groups, function(group) {
return _.reduce(group, function (a, b) { return a+b; }, 0);
});
关于javascript - 使用下划线的 Javascript 对象中的区别总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13086302/