【发布时间】:2017-12-31 07:39:19
【问题描述】:
我收到如下回复
let m = [
{
name: 'Summary',
subListExpanded: false,
subList: [
]
},
{
name: 'Upload',
subListExpanded: false,
subList: [
]
},
{
name: 'Tasks',
subListExpanded: false,
subList: [
]
},
{
name: 'Dashboard',
subListExpanded: false,
subList: [
]
},
{
name: 'Master',
subListExpanded: false,
subList: [
{
id: 'user-master',
name: 'User-Master'
},
{
id: 'menu-master',
name: 'Menu-Master'
},
{
id: 'entity-master',
name: 'Entity-Master'
},
{
id: 'vendor-master',
name: 'Vendor-Master'
},
{
id: 'xxx-master',
name: 'xxx-Master'
}
]
}
];
如果我搜索m,过滤器应该是这样的
[
{
name: 'Summary',
subListExpanded: false,
subList: [
]
},
{
name: 'Master',
subListExpanded: false,
subList: [
{
id: 'user-master',
name: 'User-Master'
},
{
id: 'menu-master',
name: 'Menu-Master'
},
{
id: 'entity-master',
name: 'Entity-Master'
},
{
id: 'vendor-master',
name: 'Vendor-Master'
},
{
id: 'xxx-master',
name: 'xxx-Master'
}
]
}
];
如果我搜索 master 过滤器响应应该是这样的?
[
{
name: 'Master',
subListExpanded: false,
subList: [
{
id: 'user-master',
name: 'User-Master'
},
{
id: 'menu-master',
name: 'Menu-Master'
},
{
id: 'entity-master',
name: 'Entity-Master'
},
{
id: 'vendor-master',
name: 'Vendor-Master'
},
{
id: 'xxx-master',
name: 'xxx-Master'
}
]
}
];
如果我搜索xxx-master,过滤器响应应该是
[
{
name: 'Master',
subListExpanded: false,
subList: [
{
id: 'xxx-master',
name: 'xxx-Master'
}
]
}
];
如果我搜索slkvcsmcskc 过滤响应,例如
[]
我的打字稿代码不能正常工作。请帮我解决这个问题>
m.filter(x=> x.name.toLowerCase() === search.toLowerCase() || x.subList.some(x1=> x1.name.toLowerCase()===search.toLowerCase()))
【问题讨论】:
-
列出所有可能的案例并一一列出,然后然后尝试缩短它。您几乎错过了所有需要检查的案例。编写可调试且易于理解的长时间工作代码,然后从那里开始。
-
确认搜索 1) 是在对象数组的名称属性中以不区分大小写的方式查找字符“m”... - 你是否也在子列表上进行深度搜索并忽略ids,只搜索名称等。你必须更具体地满足你的要求。它是否只在子列表上你有 ids?
-
您使用的是 lodash 之类的库。还是直接使用 Javascript 数组过滤器? developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
我最后一个案例可以吗
标签: javascript arrays json typescript filtering