I want to rewrite an array and to get a new one at the final. This is my code:
const arr = [
{
type:"Fiat", model:"500", color:"white"
},
{
type:"ford", model:"5300", color:"gray"
}
];
const newArr = arr.map(i => {
const r = {
...arr,
power:2
}
return r
})
console.log(newArr)
Now i get the wrong result, because one every iteration, the new array grow with a copy of the first array:
const r = {
...arr,
power:2
}
How to get the next result?
{
type:"Fiat", model:"500", color:"white", power: 2
},
{
type:"ford", model:"5300", color:"gray", power: 2
}
3 Answers 3
You are spreading arr .You need to spread i which is the object inside the array.
const arr = [
{
type:"Fiat", model:"500", color:"white"
},
{
type:"ford", model:"5300", color:"gray"
}
];
const newArr = arr.map(i => {
const r = {
...i,
power:2
}
return r;
})
console.log(newArr)
With array function you can implicitly
const arr = [
{
type:"Fiat", model:"500", color:"white"
},
{
type:"ford", model:"5300", color:"gray"
}
];
const newArr = arr.map(i => ({...i, power: 2}));
console.log(newArr)
Thomas
12.8k1 gold badge16 silver badges31 bronze badges
answered Mar 12, 2020 at 18:09
Maheer Ali
36.5k8 gold badges53 silver badges83 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
You need to spread the current object that you are getting as:
const newArr = arr.map(i => ({ ...i, power: 2 }));
answered Mar 12, 2020 at 18:11
Muhammad Zeeshan
4,7784 gold badges19 silver badges42 bronze badges
Comments
You want to do this, you are spreading arr and should be spreading the array getting passed to map (e.g. i):
const newArr = arr.map(i => {
const r = {
...i,
power:2
}
return r
})
answered Mar 12, 2020 at 18:09
mikeb
11.5k9 gold badges74 silver badges135 bronze badges
Comments
lang-js