'How to remove property from object
We have an array of objects like this:
const arrOfObjects = [
{
name: 'Ronaldo',
age: 20,
status: true
},
{
name: 'Messi',
age: 30,
status: false
},
{
name: 'Benzema',
age: 40,
status: false
},
{
name: 'Vini',
age: 50,
status: false
}
]
I would like to create new array of objects, based on this array, and add some new properties - so the map
will be the best way.
const newArray = arrayOfObjects.map(obj => {
return {
...obj,
newProperty: 'newProperty',
age: // Here I want to check if status property is true, if yes, I would like to remove property age from current object
}
})
I would like to remove age
property from object, if status: true
. How can I do it?
Solution 1:[1]
Extract the age
with destructuring and use a conditional part to insert it again:
const arrOfObjects = [{name: 'Ronaldo',age: 20,status: true},{name: 'Messi',age: 30,status: false},{name: 'Benzema',age: 40,status: false},{name: 'Vini',age: 50,status: false}];
const newArray = arrOfObjects.map(obj => {
let {age, ...rest} = obj;
return {
...rest,
newProperty: 'newProperty',
...!obj.status && {age}
}
});
console.log(newArray);
Solution 2:[2]
You can use the delete operator to remove a property
const arrOfObjects = [
{
name: 'Ronaldo',
age: 20,
status: true
},
{
name: 'Messi',
age: 30,
status: false
},
{
name: 'Benzema',
age: 40,
status: false
},
{
name: 'Vini',
age: 50,
status: false
}
]
const newArray = arrOfObjects.map(obj => {
if(obj.status) delete obj.age
return {
...obj,
newProperty: 'newProperty',
}
})
console.log(newArray)
Note : As @trincot mentionned, this will remove the age value from the original object.
Solution 3:[3]
The long way but with good performance.
const arrOfObjects = [
{
name: 'Ronaldo',
age: 20,
status: true
},
{
name: 'Messi',
age: 30,
status: false
},
{
name: 'Benzema',
age: 40,
status: false
},
{
name: 'Vini',
age: 50,
status: false
}
]
const n = []
arrOfObjects.forEach(a => {
const tmp = {}
tmp.newProperty = 'newProperty';
tmp.name = a.name;
tmp.status = a.status
if (! a.status) {
tmp.age = a.age
}
n.push(tmp);
})
console.log(n)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | trincot |
Solution 2 | |
Solution 3 | Maik Lowrey |