簡體   English   中英

使用Meteor.js進行收集的平均功能

[英]Average function with collection using Meteor.js

我需要使用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); }; 

在流星中,我正在定義一個名為“筆芯”的集合:

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM