簡體   English   中英

用對象總結數組

[英]Sum up array with objects

我有以下帶有對象的數組,我想總結所有發生的watt

 let allProducts = [{ "unique_id": "102", "currency": "$", "price": "529.99", "watt": 150 }, { "unique_id": "11", "currency": "$", "price": "323", "watt": 150 }, { "unique_id": "13", "currency": "$", "price": "23", "watt": 77 } ] let getWatt = _(allProducts) .map((objs, key) => ({ 'watt': _.sumBy(objs, 'watt') })) .value() console.log(getWatt) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script> 

如您所見,我返回了一個0值的數組。 但是,我想取回377的結果值。 有什么建議我做錯了嗎?

感謝您的答復!

使用普通的js很容易

 const sum = allProducts.reduce((a, {watt}) => a + watt, 0); console.log(sum); 
 <script> let allProducts = [{ "unique_id": "102", "currency": "$", "price": "529.99", "watt": 150 }, { "unique_id": "11", "currency": "$", "price": "323", "watt": 150 }, { "unique_id": "13", "currency": "$", "price": "23", "watt": 77 } ] </script> 

我已經閱讀了答案,但想為您的問題添加解釋。 獲得數組的原因是因為使用了.map map返回時,數組不是單個元素。 此外,您希望將返回的數組修改為原來的值,而map不會這樣做。

您想要實現的目標可以使用.reduce完成。 我的意思是這就是為什么.reduce在那

 let allProducts = [{ "unique_id": "102", "currency": "$", "price": "529.99", "watt": 150 }, { "unique_id": "11", "currency": "$", "price": "323", "watt": 150 }, { "unique_id": "13", "currency": "$", "price": "23", "watt": 77 } ]; var getWatt = allProducts.reduce((acc,curr)=> acc + curr.watt,0); console.log(getWatt); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script> 

只需將一個_.sumBy與對象數組以及所需的鍵watt數相加即可。

您的嘗試使用一個對象,而不是_.sumBy的數組。 該對象不是數組,返回值為零。

 var allProducts = [{ unique_id: "102", currency: "$", price: "529.99", watt: 150 }, { unique_id: "11", currency: "$", price: "323", watt: 150 }, { unique_id: "13", currency: "$", price: "23", watt: 77 }], getWatt = _.sumBy(allProducts, 'watt'); console.log(getWatt) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script> 

請嘗試以下操作:

 let allProducts = [{ "unique_id": "102", "currency": "$", "price": "529.99", "watt": 150 }, { "unique_id": "11", "currency": "$", "price": "323", "watt": 150 }, { "unique_id": "13", "currency": "$", "price": "23", "watt": 77 } ]; var sum = allProducts.reduce((sum,a)=>{ return sum + a.watt; },0); console.log(sum); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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