как суммировать числовые значения в объекте?

пытаюсь вывести сумму всех чисел, вот сам объект

let obj = {
  John: 900,
  Ann: 780,
  Pete: 300,
  month: 'April',
  currency: 'USD',
  isPayed: false
}

необходимо чтоб функция суммировала все числа в объекте игнорируя другие типы данных. Пишу такой код, он он не работает, не пойму почему

let obj = {
  John: 900,
  Ann: 780,
  Pete: 300,
  month: 'April',
  currency: 'USD',
  isPayed: false
}


function sum(obj) {
  let sum = 0;
  for (let key in obj) {
    if (typeof obj[key] == 'number') {
      return sum += obj[key];
    }
  }
}

ответ должен быть 1980.


Ответы (2 шт):

Автор решения: Алексей Шиманский

Потому что return не там где надо

let obj = {
  John: 900,
  Ann: 780,
  Pete: 300,
  month: 'April',
  currency: 'USD',
  isPayed: false
}


function sum(obj) {
  let sum = 0;
  for (let key in obj) {
    if (typeof obj[key] == 'number') {
       sum += obj[key];
    }
  }
  
  return sum;
}


console.log(sum(obj));

→ Ссылка
Автор решения: Pilaton

let obj = {
  John: 900,
  Ann: 780,
  Pete: 300,
  month: 'April',
  currency: 'USD',
  isPayed: false,
};

let res = Object.values(obj)
  .filter((val) => typeof val === 'number')
  .reduce((sum, current) => sum + current, 0);

console.log('res', res);

→ Ссылка