Как обратиться к элементам, а не к ключам в for?
Дан объект. Нужно вывести сумму всех чисел которые начинаются на 1 и 2. Помогите исправить пожалуйста. Как обратиться к Элементам, а не к ключам в for?
let obj = {a: 10, b:
20, c: 30,
d: 40, e: 50};
let sum = 0;
for (let elem in obj) {
console.log(elem);
if (elem[0] === '1'
&& elem[0]
=== '2') {
sum += +elem;
}
}
//console.log(sum);
Ответы (3 шт):
Автор решения: Алексей Шиманский
→ Ссылка
for (let elem in obj) {
let elementValue = obj[elem];
if (elementValue.toString()[0] === '1' || elementValue.toString()[0] === '2') {
sum += elementValue;
}
}
Автор решения: Grundy
→ Ссылка
Переменная не может одновременно иметь значение
1и2. Поэтому условиеelem[0] === '1' && elem[0] === '2'всегда будет ложным.
Вместо этого нужно воспользоваться оператором
ИЛИв цикле
for..inв переменную заносится ключ, а не значение. Чтобы получить значение, нужно взять его с помощью скобочной нотации
let obj = {
a: 10,
b: 20,
c: 30,
d: 40,
e: 50
};
let sum = 0;
for (let elem in obj) {
const value = obj[elem].toString();
if (value[0] === '1' || value[0] === '2') {
sum += obj[elem];
}
}
console.log(sum);
Автор решения: ksa
→ Ссылка
Вариант с методами объектов и массивов...
let obj = {
a: 10,
b: 20,
c: 30,
d: 40,
e: 50
};
const sum = Object.values(obj).reduce((sum, v) => {
if (['1', '2'].indexOf(v.toString()[0]) != -1) sum += v
return sum
}, 0)
console.log(sum);