使搜索功能过滤深层嵌套的对象项

问题描述 投票:0回答:2

我试图在我的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",
  },
];

我如何过滤这些?在此先感谢任何可以帮助您的人:)

javascript reactjs dictionary object search
2个回答
0
投票

您可以使用它过滤掉所有者信息,x.filter(item => item.inventory.find(data => data.name.indexOf(searchKeyword) !== -1)),如果您想要更具体的内容,请评论下来


0
投票

不确定您要如何对其进行过滤,也会共享所需的输出,以提高清晰度。

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

请让我知道这是否解决了您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.