2014-04-29 61 views
0

我設法減少並結合自己的價格金額對象與此:把值作爲鍵值從減少對象以下劃線

stooges = [{Price: 1.2, Amount: 40}, {Price: 1.3, Amount: 50}, {Price: 1.2, Amount: 60}]; 


inputarray = _.map _.groupBy(stooges, 'Price'), (v, k) -> 
     { Price: k 
     Amount : _.reduce(v, ((m, i) -> m + i['Amount']), 0)} 

console.log(inputarray) 

創建以下

[Object { Price="1.2", Amount=100}, Object { Price="1.3", Amount=50}] 

但也許分組是多少。無論如何,我試圖結束這樣的

[ { 1.2 : 100 } , { 1.3 : 50 } ] 

以價格作爲關鍵和金額作爲價值。 該死的我吮吸這個。

+0

呵呵。那麼沒問題? –

回答

0

試試這個:

_.map(_.groupBy(stooges, 'Price'), function(v, k){ 
    var obj = {}; 
    obj[k] = _.reduce(v, function(m, i){ return m + i['Amount'] }, 0); 
    return obj; 
}) 

它返回如下:

[{ "1.2": 100 }, { "1.3": 50 }] 

編輯:我不知道這一切都讓有利於返回數組。如果您使用羅短跑,而不是下劃線(我建議你這樣做),你可以用這個來代替,這將與所有的價格返回一個對象作爲鍵總量:

_(stooges).groupBy('Price').mapValues(function(stooge){ 
    return _(stooge).pluck('Amount').reduce(function(total, amount){ 
    return total + amount; 
    }) 
}).value() 

它返回以下內容:

{ "1.2": 100, "1.3": 50 } 
0

RESULT1 = _.pluck inputarray, '價格'

RESULT2 = _.pluck inputarray, '金額'

噓聲= _.object(RESULT1,結果2);

謝謝,現在它不像你的那樣優雅!