javascript - 使用下划线的 Javascript 对象中的区别总和

标签 javascript underscore.js

刚刚介绍到_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,事实上我不确定如何检索字段 v2011v2013 的 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/

相关文章:

javascript - 为什么 Underscore.js 取消了对 AMD 的支持?

node.js - 在 Express/EJS 模板中,循环数组的最简洁方法是什么?

javascript - 不使用按钮显示列表,带 knockout

javascript - service worker 列出缓存中的所有 url 并传递给另一个函数

javascript - :onchange event causing loop thru method

javascript - 如何覆盖 javascript 中返回的嵌套方法?

javascript - 测试等于条件时使用下划线时的奇怪行为

javascript - 保存子窗口会保存父窗口(Javascript)

javascript - VueJS 和 vue-router : view data does not update when using v-link

javascript - Highcharts 极坐标 : series appear over others when toggle to visible