我們有一個這樣的物件陣列:
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
}
]
我想基于這個陣列創建新的物件陣列,并添加一些新屬性 - 所以這map將是最好的方法。
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
}
})
我想age從物件中洗掉屬性,如果status: true. 我該怎么做?
uj5u.com熱心網友回復:
提取agewith 解構并使用條件部分再次插入:
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);
uj5u.com熱心網友回復:
您可以使用洗掉運算子洗掉屬性
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)
注意:正如@trincot 提到的,這將從原始物件中洗掉年齡值。
uj5u.com熱心網友回復:
路很長,但性能很好。
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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/472974.html
標籤:javascript
上一篇:for回圈執行一次后退出
