gpt4 book ai didi

javascript - 使用 Meteor.js 的集合平均函数

转载 作者:行者123 更新时间:2023-12-03 09:03:02 25 4
gpt4 key购买 nike

我需要使用集合内的多个值使用 Meteor.js 计算平均值。

特别是,我需要计算两件事:

  1. 最后一个和第一个的区别obj.km
  2. 所有obj.liters的总和

使用 javascript 我会写这样的东西:

var arr = [{
'km': 12000,
'liters': 20
}, {
'km': 12140,
'liters': 50
}, {
'km': 12240,
'liters': 45
}];

function calculate_avg() {

var sum_liters = 0,
arrlength = arr.length;

for(i = 0; i < arrlength; i++) {
sum_liters += arr[i].liters;
}

return ((arr[arrlength-1].km - arr[0].km)/sum_liters);
};

在 meteor 中,我定义了一个名为“Refills”的集合:

Refills = new Meteor.collection('refills');

// and I insert some example data like in the javascript array
Refills.insert({
'km': 12000,
'liters': 20
});

Refills.insert({
'km': 12500,
'liters': 15
});

Refills.insert({
'km': 13000,
'liters': 35
});

//etc.

最好的方法是什么?

我尝试做这样的事情:

Template.refills.helpers({

avg: function(){
var sum_liters = 0,
diff_km = 0;

Refills.find().map(function (doc, index, cursor) {

//?? var diff_km = doc[last].km - doc[0].km
var sum_liters += doc.liters;

return ((/*diff_km*/)/sum_liters);

});

}

});

提前感谢任何愿意提供帮助的人。

最佳答案

尝试一下:

Template.refills.helpers({
avg: function() {
// sort refills by km so the math in the last step makes sense
var refills = Refills.find({}, {sort: {km: 1}}).fetch();
// use a simple reduce to compute the sum
var totalLiters = _.reduce(refills, (function(s, r) {return s + r.liters;}), 0);
// return the average (total distance) / (total liters)
return (_.last(refills).km - _.first(refills).km) / totalLiters;
}
});

您需要使用fetch放在光标上,以便您可以操作数组。

关于javascript - 使用 Meteor.js 的集合平均函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32255311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com