Reputation: 53
I have the following:
const data = [
{ name: "Santa"
age: 34
},
{ name: "John"
age: 23
}
]
I should edit object elements through map()
.
For example: I want all age to be 68 and 46 relatively. (×2).
I tried to solve but I couldn't
data = data.map(e => {
e.age *= 2;
});
Upvotes: 5
Views: 577
Reputation: 3820
Your logic will be correct if you return e;
data = data.map(e =>{e.age *= 2; return e})
let data = [
{ name: "Santa",
age: 34
},
{ name: "John",
age: 23
}
]
data = data.map(e =>{e.age *= 2; return e})
console.log(data);
Upvotes: 1
Reputation: 14433
You need use a return statement, also use let
because your data is not in fact constant:
let data = [{
name: "Santa",
age: 34
},
{
name: "John",
age: 23
}
]
data = data.map(e => {e.age *= 2; return e;});
console.log(data)
Upvotes: 4
Reputation: 15698
two small mistakes: 1) you need to place ',' after object values and you need a return
var data = [
{ name: "Santa",
age: 34
},
{ name: "John",
age: 23
}
]
data.map(e=> {
e.age *= 2;
});
console.log(data);
Upvotes: 1
Reputation: 12218
In your map()
function, alter the age property of each object, then return the entire object:
const data = [
{ name: "Santa",
age: 34
},
{ name: "John",
age: 23
}
]
let resp = data.map(obj => {
obj.age *= 2
return obj
});
console.log(resp)
Upvotes: 1
Reputation: 8135
const data = [
{ name: "Santa", age: 34 },
{ name: "John", age: 23 }
];
console.log( data.map( item => ({
...item,
age: item.age + 10 // modify here
})))
data.forEach( item => {
item.age = item.age + 10 // modify direct object
})
console.log( data)
Upvotes: 1
Reputation: 4836
Try with map
const data = [ { name: "Santa", age: 34 }, { name: "John", age: 23 }]
console.log(data.map(res=>({...res, age: res.age*2})))
Upvotes: 0
Reputation: 774
The map function replaces the value in the array with the result returned by your lambda function (in your case your arrow function). Always make sure you return a value ;)
data = data.map(e => {
return {..e, age: e.age * 2};
});
Upvotes: 1