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

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

過濾對象數組,其中字段不完整

過濾對象數組,其中字段不完整

陪伴而非守候 2023-05-25 17:05:35
我有以下數組[  {    "id": 1,    "name": "Ruan Duarte",    "idade": 11,    "work": {      "id": 2,      "name": "React"    }  },  {    "id": 2,    "name": "Raul Dias",    "idade": 13  },  {    "id": 7,    "name": "Caio Ribeiro",    "idade": 60,    "work": {      "id": 4,      "name": "Rails"    }  },  {    "id": 3,    "name": "Felipe Lima",    "idade": 55  },  {    "id": 4,    "name": "Camila",    "idade": 25,    "work": {      "id": 3,      "name": "Phyton"    }  }]我有一個這種格式的數組,其中某些角落的 work.name 字段為空。我嘗試按如下方式進行過濾......array.filter((i) => {  return (    i.work.name.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "")      .includes(search.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, ""))  )})記住我有一個搜索輸入,并且在狀態下它的值是用搜索設置的;但是我得到一個錯誤,因為該字段未填寫
查看完整描述

3 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

您可以在回調中為對象值添加驗證filter。


這里,i?.work = i ? i.work : undefined


const array = [

  {

    "id": 1,

    "name": "Ruan Duarte",

    "idade": 11,

    "work": {

      "id": 2,

      "name": "React"

    }

  },

  {

    "id": 2,

    "name": "Raul Dias",

    "idade": 13

  },

  {

    "id": 7,

    "name": "Caio Ribeiro",

    "idade": 60,

    "work": {

      "id": 4,

      "name": "Rails"

    }

  },

  {

    "id": 3,

    "name": "Felipe Lima",

    "idade": 55

  },

  {

    "id": 4,

    "name": "Camila",

    "idade": 25,

    "work": {

      "id": 3,

      "name": "Phyton"

    }

  }

]


const search = 'Phy';

console.log(array.filter((i) => {

  return (

    i?.work?.name?.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "")

      .includes(search.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, ""))

  )

}));


查看完整回答
反對 回復 2023-05-25
?
www說

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

試試這個解決方案。


array.filter((i) => {

  return (

    i.work && i.work.name && i.work.name.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "")

      .includes(search.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, ""))

  )

})


查看完整回答
反對 回復 2023-05-25
?
四季花海

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

array.filter(i =>

? ? i?.work?.name?.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "")

? ? ? .includes(search.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, ""))

);


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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