Как суммировать строковое значение в Lodash по определенному столбцу?

#javascript #jquery #lodash #angular7

#javascript #jquery #Lodash #angular7

Вопрос:

Привет, я использую Lodash для целей агрегирования, но я застрял в одном месте, я получаю свое значение в виде строки вместо float, поэтому его объединяют, а не суммируют значение.

Ниже приведен опробованный способ.

 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

Любая помощь была бы очень признательна.

Комментарии:

1. Проблема из-за строковых значений. Пожалуйста, используйте parseInt или Number при обратном вызове.

Ответ №1:

Поскольку значения являются строками, означает конкатенацию, а не сложение. Вы можете предоставить обратный вызов _.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>  

Комментарии:

1. Спасибо, приятель, это действительно спасло мой час, если я хочу сгруппировать по месяцам суммировать с расширенной ценой, как это можно сделать, если ты можешь помочь?

2. @Mayur — Используйте _.groupBy сначала для группировки по месяцам, а затем для каждой группы используйте _.sumBy , как я упоминал.

3. нужно ли мне связать их в цепочку или есть какой-то другой способ

4. @Mayur — вы можете делать все, что пожелаете.