Пожалуйста, помогите разобраться в проблеме? Не могу получить результат – общая сумма
const objectWithNumbers = {
a: 10,
b: 20,
c: "string",
d: 12,
};
function sumObjectValues(obj) {
Object.values(obj).reduce((sum, key) => {
if (typeof obj[key] === "number") {
sum += obj[key];
}
return sum
}, 0);
}
const result = sumObjectValues(objectWithNumbers);
console.log(result);
//42should be
Пытался использовать сокращение и не смог получить результат
1
Seona16
16 Сен 2023 в 20:30
2 ответа
Мало ошибок.
- вам нужно вернуть значение из функции
Object.values
на самом деле дает значения, а не ключи.
const objectWithNumbers = {
a: 10,
b: 20,
c: "string",
d: 12,
};
function sumObjectValues(obj) {
return Object.values(obj).reduce((sum, val) => {
if (typeof val === "number") {
sum += val
}
return sum
}, 0);
}
const result = sumObjectValues(objectWithNumbers);
console.log(result);
//42should be
Или вы можете использовать Object.keys
const objectWithNumbers = {
a: 10,
b: 20,
c: "string",
d: 12,
};
function sumObjectValues(obj) {
return Object.keys(obj).reduce((sum, key) => {
if (typeof obj[key] === "number") {
sum += obj[key];
}
return sum
}, 0);
}
const result = sumObjectValues(objectWithNumbers);
console.log(result);
//42should be
2
binga58
16 Сен 2023 в 20:34
Однострочник с тернарным оператором:
const objectWithNumbers = {
a: 10,
b: 20,
c: "string",
d: 12,
};
const sum = Object.values(objectWithNumbers).reduce((sum, val) => typeof val === 'number' ? sum + val : sum, 0);
console.log(sum);
0
Alexander Nenashev
17 Сен 2023 в 03:50
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.
console.log(key)
(или, лучше, точки останова), чтобы увидеть значенияkey
, и ваша ошибка быстро станет очевидной.