亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果匹配條件,則在對象數組中添加鍵

如果匹配條件,則在對象數組中添加鍵

慕后森 2023-05-19 17:01:21
我正在嘗試根據條件獲取一組對象。如果該值為真,則僅將該鍵和值添加到新的對象數組中。但是,它給出了錯誤:  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(item => ({id: item.id, val: item.val != null ? item.val : ''}))console.log(newArr); //It is workingconst 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 != null ? item.val : '', (item.show) && (show: item.show)}))console.log(expectedArr); //Shows error預期結果:[  {    "id": 123,    "val": "abcd"  },  {    "id": 123,    "val": "abcd"    "show": true  },  {    "id": 123,    "val": "abcd"  },  {    "id": 123,    "val": "abcd"  }]任何幫助將不勝感激。
查看完整描述

4 回答

?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

那 ?


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; }


查看完整回答
反對 回復 2023-05-19
?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

你可以像這樣重寫它。使用這種語法,當item.show括號為真時,您將解析為和對象,然后您只需將其傳播到您的對象中。您還可以使用無效合并來分配item.val


 const expectedArr = arr.map((item) => ({

      id: item.id,

      val: item.val ?? "",

      ...(item.show && { show: item.show }),

    }));


查看完整回答
反對 回復 2023-05-19
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

目前,它在函數內部的一行中包含多個條件,Array.map并且無效。


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);


查看完整回答
反對 回復 2023-05-19
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

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


查看完整回答
反對 回復 2023-05-19
  • 4 回答
  • 0 關注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號