像JSON属性和sum值一样组合
Combine like JSON properties and sum values
我有这样的东西:
[
{
"SalesRep": "Bob",
"Market": "Market1",
"Revenue": "1000"
},
{
"SalesRep": "Mary",
"Market": "Market2",
"Revenue": "2000"
},
{
"SalesRep": "Amy",
"Market": "Market1",
"Revenue": "3000"
},
{
"SalesRep": "Cody",
"Market": "Market2",
"Revenue": "5000"
}
]
我想得到的是另一个对象,它像市场一样结合在一起,并将收入相加,所以上面的内容是:
[
{
"Market": "Market1",
"Revenue": "4000"
},
{
"Market": "Market2",
"Revenue": "7000"
}
]
我不知道如何在topMarkets
上迭代来搜索里面是否存在市场。我尝试过很多不同的东西,但这可能是我最接近的一次。
var topMarkets = [];
$.each( data, function( k, v ) {
for(var i=0; i<data.length; i++) {
if (topMarkets.length == 0) {
topMarkets.push({"Market":v.Market, "Revenue":parseFloat(v.Revenue)});
} else {
//how to check if topMarkets[i]["Market"] == v.Market ?
//push to topMarkets here if v.Market does not exist in topMarkets
}
}
});
只需要迭代和检查!
var totalRevenues = [];
for (var i = 0; i < data.length; i++) {
var market = data[i].Market;
var index = getMarketIndex(totalRevenues, market);
var revenue = parseInt(data[i].Revenue, 10);
if (index != -1) {
totalRevenues[index].Revenue += revenue;
} else {
totalRevenues.push({Market: market, Revenue: revenue});
}
}
function getMarketIndex(array, market) {
for (var i = 0; i < array.length; i++) {
if (array[i].Market == market) {
return i;
}
}
return -1;
}
工作演示:http://jsfiddle.net/hcgawe3p/
相关文章:
- 根据id将json数组组合为一个json数组
- 接受不在列表中的值-引导组合框
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 组合两个javascript函数
- Telerik rad组合框多列数据绑定
- 使用向下箭头键(与tab键一样)聚焦下一个输入
- 组合 2 个 JavaScript .scroll 函数
- 如何使用jquery组合两个数组
- onChange不足以从Dojo组合框触发查询
- 组合承诺和非承诺值
- 所有控件的组合框
- 在D3中组合多个事件
- AngularJS-如何只对多个事件的组合采取行动
- 如何在服务、技能、投资组合等方面添加滑动效果
- 在SVG地图上添加水的渐变,就像在谷歌地图(PHP/JS)中一样
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- 如何在谷歌可视化中组合数字和模式格式化程序
- 更改组合框分页后,getValue和getRawValue返回相同的值
- 类型错误:url未定义extjs 4正在填充组合框
- 像JSON属性和sum值一样组合