![](/img/trans.png)
[英]Problems deleting a Meteor.js collection using template event listeners
[英]Average function with collection using Meteor.js
我需要使用Meteor.js使用集合內的多個值來計算平均值。
特別是,我需要計算兩件事:
使用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); };
在流星中,我正在定義一個名為“筆芯”的集合:
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;
}
});
您需要在游標上使用訪存 ,以便可以操縱數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.