1

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

var invt =

[ {
"id":1,
"model":"Canon SX230",
"qty":10,
"price":"150.50"
},
{
"id":2,
"model":"Canon Rebel T3i",
"数量”:25,
“价格”:“450.50”,
},
{
“id”:3,
“型号”:“Canon Rebel T2”,
“数量”:10,
“价格”:“250.00”
},
{
“id ":4,
"型号":"Canon Rebel T2i",
"数量":15,
"价格":"275.00"
},
{
"id":5,
"型号”:“佳能 SX230”,
“数量”:5,
“价格”:“125.00”
}]

如何过滤以根据模型对数量求和。创建具有相似模型的新对象总计数量。

本质上,结果将是:
[{
"id":1,
"model":"Canon SX230",
"qty":15,
"price":"275.00"
},
{
"id":2,
"model":" Canon Rebel T3i",
"qty":25,
"price":"450.50"
}]
等...

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

变量总和 = {};

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

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

2 回答 2

0
Select sum(quantity)
From yourtable
Group by model;

这应该这样做。

于 2012-12-26T18:54:44.243 回答
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/

将此对象转换为您想要的格式将是微不足道的。

于 2012-12-26T19:04:12.463 回答