JavaScript中基于正则对比标准数组与对象数组提取匹配值的方法
JavaScript实现方案
实现逻辑
- 遍历
folderHierarchy.path对象数组的每一项,取出当前元素的innerpath属性值 - 遍历
concaternated字符串数组,用你提供的正则提取每个字符串最后一个/后的内容,和当前innerpath做全等比对 - 匹配成功后即可将对应字符串赋值给
parentpath变量,你也可以根据业务需求调整为收集所有匹配结果的逻辑
完整代码
// 原始数组定义 const concaternated = [ "Regression Scripts/WPF Scripts/Maps/Map Tools/Alerting Areas", "Regression Scripts/WPF Scripts/Application Access/Application Logoff", "Regression Scripts/WPF Scripts/Application Logon", "Regression Scripts/WPF Scripts/Resourcing/Booking on / off - CW (incl TRLI)", "Regression Scripts/WPF Scripts/Resourcing/Call Sign Transfer", "Regression Scripts/WPF Scripts/Contact Directory/Maintain Contact Directory", "Regression Scripts/WPF Scripts/Contact Directory/Contact Directory Methods", "Regression Scripts/WPF Scripts/Maps/Map Favourites" ]; const folderHierarchy = { path: [ { id: "2", outerpath: "Regression Scripts", innerpath: "WPF Scripts" }, { id: "2", outerpath: "WPF Scripts", innerpath: "Application Logon" }, { id: "2", outerpath: "WPF Scripts", innerpath: "Alarms Administration" }, { id: "2", outerpath: "WPF Scripts", innerpath: "Application Access" }, { id: "2", outerpath: "WPF Scripts", innerpath: "Contact Directory" }, { id: "2", outerpath: "WPF Scripts", innerpath: "Maps" } ] }; // 你指定的正则规则 const regex = /([^/]+$)/gm; let parentpath = ''; // 遍历执行匹配 folderHierarchy.path.forEach(item => { const currentInner = item.innerpath; const matchedItem = concaternated.find(str => { const endPart = str.match(regex); return endPart && endPart[0] === currentInner; }); if (matchedItem) { parentpath = matchedItem; // 此处可添加你需要的后续业务逻辑 console.log(`匹配到对应路径:${parentpath}`); } });
说明
如果需要保留所有匹配结果而非覆盖parentpath,可以定义一个空数组,每次匹配成功后将matchedItem推入数组即可。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

