具有一个带有对象的数组并且在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;
}
});
});
用forEach()
环绕外部数组,然后在内部filter()
数组上使用options
。
search = inputValue.toLowerCase();
test.forEach(t => t.options = t.options.filter(o => o.label.toLowerCase().includes(searchValue)));
这将返回所有匹配的搜索查询选项:
function find(array, query) {
return array.reduce((prev, current) => prev.concat(current.options), []).filter(item => item.label.includes(query))
}
find(test, 'Audi')