首页 > 解决方案 > 将字符串与列表元素匹配

问题描述

我有一个这样的清单

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 或其他功能..)

我能怎么做?

我的目的是检查是否

标签: angulartypescript

解决方案


您可以创建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);


推荐阅读