[英]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.