reduce javascript
Я сейчас пытаюсь разобраться как работает reduce. Наткнулся на такую задачу. Есть массив который содержит несколько объектов.
let mas = [{ age: 44, name: 'Sam' }, { age: 22, name: 'Jack' }];
Мне нужно написать функцию, которая возвращает объект следующего вида
obj = { 'Sam' : 44, 'Jack' : 22};
вот что у меня получается
let mas = [{ age: 44, name: 'Sam' }, { age: 22, name: 'Jack' }];
function f() {
let obj = {};
return obj = mas.reduce((prev, curr, index) => {
return curr.name = curr.age
}, {});
}
console.log(f());
подскажите, что не так
Ответы (1 шт):
Автор решения: Денис Степанов
→ Ссылка
Вам надо вернуть объект, который получен из предыдущей итерации добавлением поля curr.name со значением curr.age.
Чтобы было так:
{} -> {'Sam' : 44} -> {'Sam' : 44, 'Jack' : 22}
Вы же в строке curr.name = curr.age возвращаете значение curr.age. То есть результатом выполнения всегда будет age последнего элемента массива.
let mas = [{
age: 44,
name: 'Sam'
}, {
age: 22,
name: 'Jack'
}];
const obj = mas.reduce((acc, curr) => {
acc[curr.name] = curr.age;
return acc;
}, {});
console.log(obj);
let mas = [{
age: 44,
name: 'Sam'
}, {
age: 22,
name: 'Jack'
}];
const obj = mas.reduce((acc, curr) => ({[curr.name]: curr.age, ...acc}), {});
const obj2 = mas.reduce((acc, curr) => Object.assign({[curr.name]: curr.age}, acc), {});
console.log(obj);
console.log(obj2);