如何使用Lodash按特定列对字符串值求和?

7

你好,我正在使用lodash进行聚合操作,但是遇到了一个问题,我的数据值被转换成字符串而不是浮点数,所以连接而不是求和。

下面是我尝试的方法:

var data = [{extendedPrice: "5151.059", month: "January"}, 
            {extendedPrice: "8921.0336", month: "March"},
            {extendedPrice: "2036.9865", month: "April"}];

var sumValue = _.sumBy(data,extendedPrice);

上述结果如下:

5151.0598921.03362036.9865

期望结果如下:

16109.0791

任何帮助将不胜感激。


由于字符串值的原因出现问题。请在回调函数中使用parseInt或Number。 - DevProf
1个回答

17

由于这些值是字符串,因此+表示连接而不是加法。您可以向_.sumBy函数提供一个回调函数:

由于这些值是字符串,因此+表示连接而不是加法。您可以向_.sumBy函数提供一个回调函数:

_.sumBy(data, item => Number(item.extendedPrice));

工作演示:

var data = [{extendedPrice: "5151.059", month: "January"}, 
            {extendedPrice: "8921.0336", month: "March"},
            {extendedPrice: "2036.9865", month: "April"}];

var sumValue = _.sumBy(data, item => Number(item.extendedPrice));
console.log(sumValue);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>


谢谢,伙计,这真的节省了我的时间。如果我想按月分组并将其与extendedPrice相加,该怎么做呢?你能帮忙吗? - Mayur
@Mayur -- 首先使用 _.groupBy 按月份分组,然后对于每个组,像我提到的那样使用 _.sumBy - 31piy
我需要将它们链接起来还是有其他方法? - Mayur
@Mayur -- 你可以按照自己的喜好做任何事情。 - 31piy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接