angular - 将字符串与列表元素匹配
问题描述
我有一个这样的清单
let array = [
{ url: 'url1'},
{ url: 'url2/test', children: [{url: 'url2/test/test'}, {url: 'url2/test2/test'}],
{ url: 'url3', children: [{url: 'url3/test3/test3}, {url: 'url3/test3/test1'}], children: [{url: 'url3/test3/test1/test5'}]},
{ url: 'url4', children: [{url: 'url4/test4/test4'}, {url: 'url3/test4/test4'}]]
和一个输入字符串,它是一个 url。(例如 url: 'url3/test3/test1')。
我的目的是在不使用 for 循环的情况下检查列表中是否存在输入 url。(使用 map、some、filter 或其他功能..)
我能怎么做?
我的目的是检查是否
解决方案
您可以创建check
如下功能。children
如果属性存在,它也会递归调用自己。然后使用some
方法得到结果。
let array = [{url:'url1'},{url:'url2/test',children:[{url:'url2/test/test'},{url:'url2/test2/test'}]},{url:'url3',children:[{url:'url3/test3/test3'},{url:'url3/test3/test1'}],},{url:'url4',children:[{url:'url4/test4/test4'},{url:'url3/test4/test4'}]}];
function check(arr, url) {
return arr.some(a => a.url == url || (a.children && check(a.children, url)));
}
let isExists = check(array, 'url3/test3/test3');
console.log(isExists);
let isExists2 = check(array, 'url3/test3');
console.log(isExists2);
推荐阅读
- python - not able to authenticate user
- vba - VBA Worksheet reference being ignored
- java - For handling the same exception check in through multiple methods, is it bad practice to use a handler method?
- movesense - 如果订阅 HR/ECG,则无法获取系统状态更改通知
- node.js - Typescript 定义 POST 请求响应的类型
- python - 从 C# Windows 窗体运行 Python 文件
- stackblitz - StackBlitz - share url with specific path
- r - 更改 R 图中的颜色条字体
- firebase - 从身份验证事件触发的云功能是否可以保证运行?
- google-sheets - 在 Google 表格中,如何随机化一组值的顺序?