我有以下包含对象的数组,我想总结一下所有出现的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
的结果值。有什么建议吗?我哪里做错了?
感谢您的回复!
发布于 2018-06-04 03:30:25
使用普通的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>
发布于 2018-06-04 03:30:16
只需使用对象数组和所需键watt
的单个_.sumBy
进行求和即可。
您的尝试使用对象,而不是_.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>
发布于 2018-06-04 03:31:41
尝试以下操作:
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);
https://stackoverflow.com/questions/50670204
复制相似问题