第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何在多級對象數(shù)組中查找值

如何在多級對象數(shù)組中查找值

繁星點點滴滴 2022-07-21 10:33:09
我正在嘗試實現(xiàn)一個搜索框,如果我開始在其中搜索一個值,它將在嵌套的對象數(shù)組中查找目標(biāo),如下所示:-[  {    "groupId": 1,    "groupName": "Americas",    "groupItems": [      {        "id": 5,        "name": "Brazil",        "parentID": 1,        "parentName": "Americas"      },      {        "id": 6,        "name": "Canada",        "parentID": 1,        "parentName": "Americas"      }    ],    "isExpanded": false,    "toggleAllSelection": false  },  {    "groupId": 2,    "groupName": "APAC",    "groupItems": [      {        "id": 7,        "name": "Australia",        "parentID": 2,        "parentName": "APAC"      },      {        "id": 8,        "name": "China",        "parentID": 2,        "parentName": "APAC"      }    ],    "isExpanded": false,    "toggleAllSelection": false  },  {    "groupId": 3,    "groupName": "Europe",    "groupItems": [      {        "id": 9,        "name": "Belgium",        "parentID": 3,        "parentName": "Europe"      },{        "id": 7,        "name": "Austria",        "parentID": 2,        "parentName": "APAC"      },      {        "id": 10,        "name": "Bulgaria",        "parentID": 3,        "parentName": "Europe"      }    ],    "isExpanded": false,    "toggleAllSelection": false  }]現(xiàn)在我想在數(shù)組中的每個對象數(shù)組中搜索name屬性。當(dāng)有匹配時,我的函數(shù)應(yīng)該以相同的格式返回數(shù)據(jù),因為它將自動完成,所以它應(yīng)該是部分匹配而不是完全匹配。所以如果在輸入框中搜索它應(yīng)該返回groupItemsgroupaus[{    "groupId": 2,    "groupName": "APAC",    "groupItems": [      {        "id": 7,        "name": "Australia",        "parentID": 2,        "parentName": "APAC"      }],    "isExpanded": false,    "toggleAllSelection": false,},{    "groupId": 3,    "groupName": "Europe",    "groupItems": [       {        "id": 7,        "name": "Austria",        "parentID": 2,        "parentName": "APAC"      }    ],    "isExpanded": false,    "toggleAllSelection": false  }]
查看完整描述

3 回答

?
長風(fēng)秋雁

TA貢獻1757條經(jīng)驗 獲得超7個贊

const findByName = (data, name) => {

  const result = data.reduce((m, { groupItems, ...rest }) => {

    let mapGrpItems = (groupItems || []).filter((item) =>

      item.name.includes(name)

    );

    if (mapGrpItems.length) {

      m.push({ ...rest, groupItems: mapGrpItems });

    }

    return m;

  }, []);

  return result;

};

const findByName = (data, name) => {

  const result = data.reduce((m, { groupItems, ...rest }) => {

    let mapGrpItems = (groupItems || []).filter((item) =>

      item.name.includes(name)

    );

    if (mapGrpItems.length) {

      m.push({ ...rest, groupItems: mapGrpItems });

    }

    return m;

  }, []);

  return result;

};


const data = [{"groupId":1,"groupName":"Americas","groupItems":[{"id":5,"name":"Brazil","parentID":1,"parentName":"Americas"},{"id":6,"name":"Canada","parentID":1,"parentName":"Americas"}],"isExpanded":false,"toggleAllSelection":false},{"groupId":2,"groupName":"APAC","groupItems":[{"id":7,"name":"Australia","parentID":2,"parentName":"APAC"},{"id":8,"name":"China","parentID":2,"parentName":"APAC"}],"isExpanded":false,"toggleAllSelection":false},{"groupId":3,"groupName":"Europe","groupItems":[{"id":9,"name":"Belgium","parentID":3,"parentName":"Europe"},{"id":7,"name":"Austria","parentID":2,"parentName":"APAC"},{"id":10,"name":"Bulgaria","parentID":3,"parentName":"Europe"}],"isExpanded":false,"toggleAllSelection":false}]

console.log(JSON.stringify(findByName(data, "Aus"), null, 2));


查看完整回答
反對 回復(fù) 2022-07-21
?
白豬掌柜的

TA貢獻1893條經(jīng)驗 獲得超10個贊

您可以將Arrays.filter用于 JSON 數(shù)組中每個外部對象中的組項目,以過濾掉與您的搜索查詢匹配的項目。你可以這樣寫:


let autocomplete = (key) => { 

  // arr = Your Data

  let result = []

  arr.forEach(grp=> {

  let out = grp

  let res = grp.groupItems.filter(item => item.name.toLowerCase().includes(key.toLowerCase()))

  if(res.length!=0)

  {

    out.groupItems = res

    result.push(out)}

})

return result


查看完整回答
反對 回復(fù) 2022-07-21
?
德瑪西亞99

TA貢獻1770條經(jīng)驗 獲得超3個贊

在實施此之前,我肯定會嘗試通過您嘗試做的事情進行推理。能夠通過這樣的解決方案進行推理是編程工作的 99%。


function filterGroups(filter) {

  const result = [];


  myObj.forEach(group => {

    const filteredGroups = group.groupItems.filter(groupItem => {

      return groupItem.name.toLowerCase().includes(filter);

    });


    if (filteredGroups.length > 1) {

      result.push({

        ...group,

        groupItems: filteredGroups

      });

    }

  });


  return result;

}


查看完整回答
反對 回復(fù) 2022-07-21
  • 3 回答
  • 0 關(guān)注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號