4 回答

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
那 ?
const arr =
[ { id: 123, val: 'abcd', other: 'abcd' }
, { id: 123, val: 'abcd', other: 'abcd', show: true }
, { id: 123, val: 'abcd', other: 'abcd', show: false }
, { id: 123, val: 'abcd', other: 'abcd' }
]
const newArr = arr.map(({id,val,show})=>show?{id,val,show}:{id,val})
console.log( newArr )
.as-console-wrapper { max-height: 100% !important; top: 0; }

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊
你可以像這樣重寫它。使用這種語(yǔ)法,當(dāng)item.show括號(hào)為真時(shí),您將解析為和對(duì)象,然后您只需將其傳播到您的對(duì)象中。您還可以使用無(wú)效合并來(lái)分配item.val
const expectedArr = arr.map((item) => ({
id: item.id,
val: item.val ?? "",
...(item.show && { show: item.show }),
}));

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊
目前,它在函數(shù)內(nèi)部的一行中包含多個(gè)條件,Array.map并且無(wú)效。
const arr = [{id: 123, val: 'abcd', other: 'abcd'}, {id: 123, val: 'abcd', other: 'abcd', show: true}, {id: 123, val: 'abcd', other: 'abcd', show: false}, {id: 123, val: 'abcd', other: 'abcd'}]
const result = arr.map(({ id, val, show }) => {
const newObj = {
id,
val: val != null ? val : ''
};
if (show) {
newObj['show'] = show;
}
return newObj;
});
console.log(result);

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
const arr = [{id: 123, val: 'abcd', other: 'abcd'}, {id: 123, val: 'abcd', other: 'abcd', show: true}, {id: 123, val: 'abcd', other: 'abcd', show: false}, {id: 123, val: 'abcd', other: 'abcd'}]
const expectedArr = arr.map(item => ({id: item.id, val: item.val? item.val: '', show: item.show? item.show: 0}))
console.log(expectedArr); //solved-ish
//but honestly, that's the furthest i can go with your strange code golfed syntax setup.. to be honest, using ? is similar to if but NOT if, it's closer to || but anyway
console.log('skip what was above, the moment of truth below')
const theRealAnswer = arr.map(item=>{ const i={id: item.id, val: item.val? item.val: '', show: item.show? item.show: 0};if(!i.show){delete(i.show)}return(i) })
console.log(theRealAnswer)
//now, the logical construct(what u gave the mapper) was impossible to do what u wanted. coding isn't just syntax, it's logic too. you cannot assign a key to completely delete the key itself
添加回答
舉報(bào)