Go.JS调用findNodesByExample匹配数组内字段正则返回空问题
问题原因
你的代码存在两个核心问题:
- 箭头函数无返回值:你在
some方法的回调中用花括号包裹了逻辑,但没有显式写return,导致每次判断都返回undefined,最终整个条件判定为不匹配。 - 多条件匹配逻辑错误:你将
key和fields的匹配条件拆分为两个独立对象传入findNodesByExample,该方法多参数为或匹配逻辑,即满足任意一个参数的条件就会被返回。如果你需要同时满足两个条件,需要把它们写在同一个对象内。
修复代码
如果你需要或匹配(满足key匹配 或 fields内name匹配),修复some回调的返回逻辑即可:
let safe = input.value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); let regex = new RegExp(safe, "i"); myDiagram.findNodesByExample( { key: regex }, { fields: function(fieldsArr) { return fieldsArr.some(a => regex.test(a.name)) } } );
如果你需要且匹配(同时满足key匹配 和 fields内name匹配),把两个条件合并到同一个对象:
let safe = input.value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); let regex = new RegExp(safe, "i"); myDiagram.findNodesByExample({ key: regex, fields: function(fieldsArr) { return fieldsArr.some(a => regex.test(a.name)) } });
内容的提问来源于stack exchange,提问作者dolor3sh4ze
相关产品推荐
相关产品推荐

