基于主干/下划线中的另一个字段对一个db字段求和的函数

时间:2012-12-26 18:49:39

标签: jquery backbone.js underscore.js

我目前正在使用骨干网组建一个简单的库存管理应用程序。我的数据库中有一个包含模型和数量的表;这是对象的strigify版本:

var invt =

[ {
  “ID”:1,
  “型号”:“佳能SX230”,
  “数量”:10,
  “价格”: “150.50”
},
{
“ID”:2,
“模特”:“佳能反叛T3i”,
“数量”:25,
“价格”: “450.50”,
},
{
“ID”:3,
“模特”:“佳能反叛T2”,
“数量”:10,
“价格”: “250.00”
},
{
“ID”:4,
“模特”:“佳能反叛T2i”,
“数量”:15,
“价格”: “275.00”
},
{
“ID”:5,
“型号”:“佳能SX230”,
“数量”:5,
“价格”: “125.00”
}]

如何根据模型过滤总和数量。使用相似模型创建一个总数量的新对象。

基本上结果是:
[{
“ID”:1,
“型号”:“佳能SX230”,
“数量”:15,
“价格”: “275.00”
},
{
“ID”:2,
“模特”:“佳能反叛T3i”,
“数量”:25,
“价格”: “450.50”
}]
等...

我一直在尝试使用以下循环:

var sum = {};

    for (var i = 0; i < invt.length; i++) { 
        var record = invt[i];

        sum.model = record.model + (sum.model);
    };

2 个答案:

答案 0 :(得分:0)

Select sum(quantity)
From yourtable
Group by model;

这应该这样做。

答案 1 :(得分:0)

由于你只使用了JS相关标签,我想你想做这个客户端。

你可以这样做:

var records = [
    {
        id: 1,
        model: "A",
        quantity: 6
    }, {
        id: 1,
        model: "A",
        quantity: 4
    }, {
        id: 1,
        model: "B",
        quantity: 3
    }, {
        id: 1,
        model: "B",
        quantity: 2
    }
];

var sum = {};
for(var i = 0; i < records.length; i++) {
    var record = records[i];
    sum[record.model] = record.quantity + (sum[record.model] || 0);
}
document.body.innerHTML = JSON.stringify(sum);​

演示:http://jsfiddle.net/Dhsm5/

将此对象转换为您想要的格式是非常简单的。