_.sum(_.values(x)) ,если значения x не все числа

У меня есть объект, подобный этому:

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

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

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

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Сравнение структур данных: Массивы и объекты в Javascript
Сравнение структур данных: Массивы и объекты в Javascript
Итак, вы изучили основы JavaScript и хотите перейти к изучению структур данных. Мотивация для изучения/понимания Структур данных может быть разной,...
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
Приложение для отслеживания бюджета на React js для начинающих
Приложение для отслеживания бюджета на React js для начинающих
Обучение на практике - это проверенная тема для достижения успеха в любой области. Если вы знаете контекст фразы "Практика делает человека...
Стоит ли использовать React в 2022 году?
Стоит ли использовать React в 2022 году?
В 2022 году мы все слышим о трендах фронтенда (React, Vue), но мы не знаем, почему мы должны использовать эти фреймворки, когда их использовать, а...
0
0
153
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Отфильтруйте не числа.

const obj = { name: "myobject", MON: 3, TUE: 5 };
const numbers = _.filter(obj, x => typeof x === 'number');
const total = _.sum(numbers);

я предполагаю, что вы имели в виду const total = _.sum(numbers);

tearswep 22.05.2019 15:30

О да. Довольно.

mbojko 22.05.2019 15:31

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

const obj = { name: "myobject", MON: 3, TUE: 5 };
var total = 0;
_.forOwn(obj, function(value) {
  if(typeof value === 'number')
    total += value;
});

Вы можете использовать _.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>

Другие вопросы по теме