javascript - 在输入到输入上过滤嵌套数组
问题描述
我正在尝试过滤数组的子元素,但我不明白如何专门引用子元素。到目前为止,我只有一个顶级过滤器。
大批:
options: [
{name: 'Выход детали из строя в процессе эксплуатации', value: null,
children: [{name: 'Увеличение зазора, люфт (дробь/стуки)', value: 53},
{name: 'Обрыв детали', value: 54}]},
{name: 'Поломка при установке', value: null},
{name: 'Брак до установки', value: null,
children: [{name: 'Недокомплект', value: 55},
{name: 'Заводской брак (замятия, отсутствие резьбы, пробой пыльника и т.д.)',
value: 56}]},
],
列表输出:
<div v-if="areOptionsVisible"
:style="{maxHeight: maxHeight, overflow: 'auto', zIndex: zIndex}"
class="w-autocomplete__items">
<div v-for="option in filteredOptions" class="w-autocomplete__item_first" >
{{ option.name }}
<div v-for="item in option.children" class="w-autocomplete__item"
:class="{'w-autocomplete__item_active': currentIndex === item}"
@mouseenter="setActive(item)"
@keyup.up="changeCurrent('up', item)"
@keyup.down="changeCurrent('down', item)"
@click="doChoose(item)">
{{ item.name }}
</div>
</div>
</div>
筛选:
computed: {
filteredOptions(){
return this.options.filter(elem => {
return elem.name.toLowerCase().includes(this.searchText.toLowerCase());
});
},
},
解决方案
尝试扁平化并映射该数组并在其中过滤:
computed: {
filteredOptions(){
return this.options.flatMap(option => {
return option.children;
}).filter(elem => {
return elem && elem.name.toLowerCase().includes(this.searchText.toLowerCase());
});
},
}
JS 示例
let options = [{
name: 'smith',
value: null,
children: [{
name: 'john',
value: 53
},
{
name: 'Обрыв детали',
value: 54
}
]
},
{
name: 'foobar',
value: null
},
{
name: 'foo',
value: null,
children: [{
name: 'bar',
value: 55
},
{
name: 'aaaa',
value: 56
}
]
},
]
let filtered =
options.flatMap(option => {
return option.children;
}).filter(elem => {
return elem && elem.name.toLowerCase().includes('bar');
})
console.log(filtered)
推荐阅读
- javascript - 我需要帮助从我的 MVC 控制器调用方法并使用 ajax 返回其返回值(int)
- reactjs - mount() 失败,因为目标容器不是 dom 元素
- python-2.7 - 为什么即使在关闭会话后,Python-Requests 在循环中发出 POST 时也会返回相同的数据?
- android - 根据按钮大小的变化改变文本大小
- mysql - 如何使用 Google Compute Engine 保持持久的 SQL 代理 Unix 套接字
- sql-server - 外键引用不匹配数据类型错误
- c# - 动态添加行到表格布局面板
- unit-testing - 使用 mockito 进行 Spring Boot 应用程序主方法单元测试
- c# - 选择时如何阻止VScrollbar闪烁
- css - Wordpress RTL,将 RTL 添加到主题