2015-05-10 56 views
1

我的Parse數據庫中有一列填充了數字,我試圖將它們加在一起得到總數。如何將Parse查詢讀取或轉換爲數組(JavaScript SDK)

我知道怎麼做,如果返回的數據是一個單一的數組,但我只能弄清楚如何將數字作爲單個對象返回。這是我的代碼做的是:

 var query = new Parse.Query(Services); 
     query.exists("costMonthly"); 
     query.find({ 
      success: function (results) { 
       for (var i = 0; i < results.length; i++) { 
        var object = results[i]; 
        console.log(object.get('costMonthly')); 
       } 
      }, 
      error: function (error) { 
       alert("Error: " + error.code + " " + error.message); 
      } 
     }); 

我怎麼會去獲取什麼,我想作爲一個數組或至少將我有什麼成一個?

回答

2

它看起來像你試圖總結costMonthly字段。您可以使用reduce做到這一點很容易:

var query = new Parse.Query(Services); 
query.exists("costMonthly"); 
query.find({ 
    success: function (results) { 
     var sum = results.reduce(function(prev, cur) { 
      return prev + cur.get('costMonthly'); 
     }, 0); 
    }, 
    error: function (error) { 
     alert("Error: " + error.code + " " + error.message); 
    } 
}); 

如果你的目標是costMonthly值的數組,這將工作:

var monthlyCosts = results.map(function(item) { 
    return item.get('costMonthly'); 
}); 

瞭解更多關於reduce這裏:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

2

你可以創建臨時數組,並通過迭代推送結果,而不是最佳解決方案,但是如果您想稍後處理結果,它將非常有用:

var costMonthlyArray=[]; 
var query = new Parse.Query(Services); 
     query.exists("costMonthly"); 
     query.find({ 
      success: function (results) { 
       for (var i = 0; i < results.length; i++) { 
        var object = results[i]; 
        var cost=object.get('costMonthly'); 
        costMonthlyArray.push(cost); 
        console.log(cost); 
       } 
      }, 
      error: function (error) { 
       alert("Error: " + error.code + " " + error.message); 
      } 
     });