使用JavaScript过滤嵌套数组

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

具有一个带有对象的数组并且在options数组内部,如何通过键值过滤对象的内部数组?

以下是示例:

let test = [{
  "options": [{
     "label": "Audi",
     "value": 10
   },
    {
     "label": "BMW",
     "value": 18
   },
   {
     "label": "Mercedes Benz",
     "value": 116
   },
   {
     "label": "VW",
     "value": 184
   }
 ],
 "label": "test1"
},
{
 "options": [{
    "label": "Adler",
    "value": 3664
  },
  {
    "label": "Alfa Romeo",
    "value": 3
  },
  {
    "label": "Alpine",
    "value": 4
  }
],
 "label": "test2"
}
]

我如何找回对象:

 {
   "label": "Audi",
   "value": 10
 }

如果我使用关键字Audi进行过滤

return label.toLowerCase().includes(inputValue.toLowerCase());

我尝试了以下内容

test.map((k) => {
              res = k.options.filter((j) => {
                inputValue.toLowerCase();
                if (j.label.toLowerCase().includes(inputValue.toLowerCase())) {
                  return j;
                }
              });
            });
javascript arrays object filter keyword
1个回答
0
投票

forEach()环绕外部数组,然后在内部filter()数组上使用options

search = inputValue.toLowerCase();
test.forEach(t => t.options = t.options.filter(o => o.label.toLowerCase().includes(searchValue)));

0
投票

这将返回所有匹配的搜索查询选项:

function find(array, query) {
  return array.reduce((prev, current) => prev.concat(current.options), []).filter(item => item.label.includes(query))
}

find(test, 'Audi')
© www.soinside.com 2019 - 2024. All rights reserved.