_.sum (_. values ​​(x)), если значения x не все числа - PullRequest
0 голосов
/ 22 мая 2019

У меня есть объект, похожий на этот:

obj = { name:"myobject", MON: 3, TUE: 5}

Я пытаюсь сделать _.sum(_.values(obj)) и поместить это значение в массив this.hours.push(_.sum(_.values(obj))).

Я ожидаю массив, подобный этому [8] (причина, по которой я хочу сохранить его внутри массива, заключается в том, что я могу захотеть проанализировать несколько объектов в будущем). Как мне этого добиться?

Ответы [ 3 ]

1 голос
/ 22 мая 2019

На всякий случай, если это кому-нибудь нужно, добавив обычный способ сделать это, кроме ответа @mbojko:

const obj = { name: "myobject", MON: 3, TUE: 5 };
var total = 0;
_.forOwn(obj, function(value) {
  if(typeof value === 'number')
    total += value;
});
1 голос
/ 22 мая 2019

Отфильтровать не-числа.

const obj = { name: "myobject", MON: 3, TUE: 5 };
const numbers = _.filter(obj, x => typeof x === 'number');
const total = _.sum(numbers);
0 голосов
/ 22 мая 2019

Вы можете использовать _.sumBy() и возвращать 0 для нечисловых значений:

const obj = { name:"myobject", MON: 3, TUE: 5}

const result = _.sumBy(_.values(obj), v => _.isNumber(v) ? v : 0)

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
...