Javascript 主干集合:检索集合的不同值并对不同值求和
与此相关 鉴于此“样本采集数据”: 我如何从集合中添加不同品牌的数量 并获取以下数据:Javascript 主干集合:检索集合的不同值并对不同值求和,javascript,jquery,backbone.js,underscore.js,Javascript,Jquery,Backbone.js,Underscore.js,与此相关 鉴于此“样本采集数据”: 我如何从集合中添加不同品牌的数量 并获取以下数据: [{brand:'audi', amount: '168.00'}, {brand:'bmw', amount: '80.70'}] 提前谢谢各位 这是一个非常标准的JavaScript: var o = data.reduce(function(m, e) { // There are lots of ways to do this depending on what sorts // o
[{brand:'audi', amount: '168.00'},
{brand:'bmw', amount: '80.70'}]
提前谢谢各位 这是一个非常标准的JavaScript:
var o = data.reduce(function(m, e) {
// There are lots of ways to do this depending on what sorts
// of things are going to be values in `m`, we're expecting
// the values to be non-zero numbers so a simple `!` is fine.
if(!m[e.brand])
m[e.brand] = 0;
m[e.brand] += parseFloat(e.amount);
return m;
}, { });
如果您担心石器时代的浏览器,请使用(数据)。减少或简单循环:
var o = { }, i;
for(i = 0; i < data.length; ++i) {
if(!o[data[i].brand])
o[data[i].brand] = 0;
o[data[i].brand] += parseFloat(data[i].amount]);
}
var o={},i;
对于(i=0;i
只要浮点值都很小,并且像它们一样靠得很近,那么使用它们应该是非常安全的。这是一个非常标准的标准,这只是简单的JavaScript:
var o = data.reduce(function(m, e) {
// There are lots of ways to do this depending on what sorts
// of things are going to be values in `m`, we're expecting
// the values to be non-zero numbers so a simple `!` is fine.
if(!m[e.brand])
m[e.brand] = 0;
m[e.brand] += parseFloat(e.amount);
return m;
}, { });
如果您担心石器时代的浏览器,请使用(数据)。减少或简单循环:
var o = { }, i;
for(i = 0; i < data.length; ++i) {
if(!o[data[i].brand])
o[data[i].brand] = 0;
o[data[i].brand] += parseFloat(data[i].amount]);
}
var o={},i;
对于(i=0;i
使用浮点值应该是非常安全的,只要它们都很小,并且像它们一样靠得很近。此解决方案首先按品牌对汽车进行分组,然后使用良好的旧reduce对数量进行求和:
var carsByBrand = _.groupBy(cars, 'brand');
var sumAmount = function(total, car){
return total + parseFloat(car.amount);
}
var sums = _.map( carsByBrand, function(cars, brand){
return {
brand: brand,
amount: _.reduce(cars, sumAmount, 0)
};
});
此解决方案首先按品牌对汽车进行分组,然后使用good old reduce将数量相加:
var carsByBrand = _.groupBy(cars, 'brand');
var sumAmount = function(total, car){
return total + parseFloat(car.amount);
}
var sums = _.map( carsByBrand, function(cars, brand){
return {
brand: brand,
amount: _.reduce(cars, sumAmount, 0)
};
});
谢谢好主意!仅当您不使用主干收集时,我才工作。=)如果data
实际上是一个集合而不是一个数组,那么你可以使用data.reduce(…)
。但是我得到了这个错误Object{undefined:NaN}
请检查这个小提琴的日志,这是因为集合的reduce
在模型上迭代,而不是在对象上:谢谢!好主意!仅当您不使用主干收集时,我才工作。=)如果data
实际上是一个集合而不是一个数组,那么你可以使用data.reduce(…)
。但是我得到了这个错误Object{undefined:NaN}
请检查这个小提琴的日志,这是因为集合的reduce
迭代模型,而不是对象: