Mirth Connect 3.7解析全局变量为数组报错:无includes()方法
搞定Mirth Connect 3.7里的数组includes报错问题
嘿,我知道你现在卡在Mirth的destination filter代码上了,报错说数组没有includes()方法对吧?这事儿我之前也碰到过,核心原因很简单:Mirth 3.7用的Rhino JavaScript引擎不支持ES6的includes()方法。
为啥会出这问题?
Mirth Connect 3.7底层用的是Rhino 1.7系列的JS引擎,这个版本对ES6新特性的支持非常有限,而Array.prototype.includes()是ES6才新增的方法,所以Rhino根本不认它。虽然你用split(',')确实把字符串转成了数组,但这个数组是Rhino原生的老版本数组,没有ES6的新方法。
给你几个靠谱的解决方案:
1. 用indexOf()替代(最省心)
indexOf()是ES5就支持的老方法,兼容性拉满。它会返回元素在数组里的索引,找不到就返回-1,改代码就行:
var someValue = 'B'; var arr = $('globalVariable'); if (arr && arr.split(',').indexOf(someValue) !== -1) { return true; } return false;
2. 自己写个includes函数(语义化更强)
要是你觉得indexOf()不够直观,也可以自己写个简单的判断函数,逻辑和includes()一样:
var someValue = 'B'; var arr = $('globalVariable'); function arrayIncludes(arr, value) { for (var i = 0; i < arr.length; i++) { if (arr[i] === value) { return true; } } return false; } if (arr && arrayIncludes(arr.split(','), someValue)) { return true; } return false;
3. 顺便处理下全局变量的空格(防坑)
另外提醒你一句,有时候Mirth的全局变量可能会带前后空格,比如' A,B,C ',split之后会得到带空格的元素,导致匹配失败。可以加个trim()处理:
var arr = $('globalVariable') ? $('globalVariable').trim() : '';
这样就能避免因为空格导致的匹配问题啦。
内容的提问来源于stack exchange,提问作者gitrust
相关产品推荐
相关产品推荐

