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

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

使搜索函數篩選深層嵌套對象項

使搜索函數篩選深層嵌套對象項

倚天杖 2022-08-18 10:09:44
我正在嘗試在我的 React 應用程序中創建一個搜索函數,通過在數組中檢查其中的項目來過濾掉一個項目。我有使用和繪制搜索中特定項目的想法。但是,從后端提取的對象具有用戶將搜索的非常深入嵌套的項目。.filter().includes()下面是一個對象的示例,其中包含我嘗試篩選注釋的項目:const x = [  {    owner: "76561198111463361",    sold: true,    inventory: [      {        name: "AK-47 | Redline", //User may look for this        price: 1369,      },      {        name: "StatTrak? AWP | Asiimov", //User may look for this        price: 8050,      },    ],    name: "m",    password: "e",  },  {    owner: "76561198111463361",    sold: true,    inventory: [      {        name: "AK-47 | Redline", //User may look for this        price: 1369,      },      {        name: "StatTrak? AWP | Asiimov", //User may look for this        price: 8050,      },    ],    name: "m",    password: "e",  },];如何過濾這些?
查看完整描述

3 回答

?
月關寶盒

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

不確定要如何過濾它也會共享所需的輸出以獲得更好的清晰度。


var data=[{owner: "76561198111463361",sold: true,inventory: [{ name: "AK-47 | Redline", }, { name: "StatTrak? AWP | Asiimov",}],name: "m",password: "e",},{owner: "76561198111463361",sold: true,inventory: [{ name: "AK-47 | Redline", }, { name: "StatTrak? AWP | Asiimov",}],name: "m",password: "e"}];


var string = 'Redline';


result = data.filter(val=>val.inventory.some(k=>k.name.toUpperCase().includes(string.toUpperCase())));


console.log(result);


如果這解決了您的問題,請告訴我。


查看完整回答
反對 回復 2022-08-18
?
手掌心

TA貢獻1942條經驗 獲得超3個贊

您可以映射和過濾數據。


const findInventory = (data, fn) => {

  return data.reduce((array, item) => {

    let inventory = item.inventory;

    if (fn !== undefined) {

      inventory = inventory.map(fn);

    }

    array = array.concat(inventory);

    return array;

  }, []);

};


const data = [{"owner":"76561198111463361","sold":true,"inventory":[{"name":"AK-47 | Redline","price":1369},{"name":"StatTrak? AWP | Asiimov","price":8050}],"name":"m","password":"e"},{"owner":"76561198111463361","sold":true,"inventory":[{"name":"AK-47 | Redline","price":1369},{"name":"StatTrak? AWP | Asiimov","price":8050}],"name":"m","password":"e"}];


// Get objects

console.log(findInventory(data));

// get names

console.log(findInventory(data, (i) => i.name));

第二個例子:


const findInventory = (data, mapper, filter) => {

  return data.reduce((array, item) => {

    let inventory = item.inventory;

    if (mapper !== undefined && filter !== undefined) {

      inventory = inventory.map(mapper).filter(filter);

    }

    array = array.concat(inventory);

    return array;

  }, []);

};


const data = [{"owner":"76561198111463361","sold":true,"inventory":[{"name":"AK-47 | Redline","price":1369},{"name":"StatTrak? AWP | Asiimov","price":8050}],"name":"m","password":"e"},{"owner":"76561198111463361","sold":true,"inventory":[{"name":"AK-47 | Redline","price":1369},{"name":"StatTrak? AWP | Asiimov","price":8050}],"name":"m","password":"e"}];


// Get objects

console.log(findInventory(data));

// get names by filter

console.log(findInventory(data, (i) => i.name, (name) => name.indexOf("AK-") !== -1));


查看完整回答
反對 回復 2022-08-18
?
烙印99

TA貢獻1829條經驗 獲得超13個贊

你可以用它來過濾掉所有者信息,如果你想要更具體的東西,請評論下來x.filter(item => item.inventory.find(data => data.name.indexOf(searchKeyword) !== -1))



查看完整回答
反對 回復 2022-08-18
  • 3 回答
  • 0 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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