我正在尝试在 mirth 通道的转换器中的 javascript 数组中找到一个字符串。当我尝试使用 indexOf 函数时,Mirth 会引发错误。我的理解是 indexOf 是浏览器添加的东西,而不是 javascript 语言本身的原生部分。(如何检查数组是否包含 JavaScript 中的对象?)
那么 Mirth 不支持 array.indexOf 吗?有什么方法可以在 Mirth 中使用 .indexOf 吗?也许是另一种语法?还是我只需要遍历数组进行搜索?
我正在尝试在 mirth 通道的转换器中的 javascript 数组中找到一个字符串。当我尝试使用 indexOf 函数时,Mirth 会引发错误。我的理解是 indexOf 是浏览器添加的东西,而不是 javascript 语言本身的原生部分。(如何检查数组是否包含 JavaScript 中的对象?)
那么 Mirth 不支持 array.indexOf 吗?有什么方法可以在 Mirth 中使用 .indexOf 吗?也许是另一种语法?还是我只需要遍历数组进行搜索?
这就是我在 Mirth js 转换器中搜索数组的方式:
var Yak = [];
Yak.push('test');
if(Yak.indexOf('test') != -1)
{
// do something
}
这会给你带来错误吗?
Mirth 为 Javascript 使用 Rhino 引擎,在一些早期版本的 JVM 上,数组似乎不支持 indexOf。自从将我们的 JVM 升级到 1.6.23(或更高版本)后,indexOf 就开始工作了。但是,我们仍然有遗留代码,在搜索字符串数组时,我每次只使用一个循环:
var compareString = "blah";
var index = -1;
for (var i = 0; i < myArray.length; ++i)
{
if (myArray[i] == compareString)
{
index = i;
break;
}
}
如果您需要经常这样做,您应该可以使用代码模板手动将 indexOf 函数添加到 Array。
将代码模板设置为全局访问,并尝试这样的事情(未经测试的代码):
Array.prototype.indexOf = function(var compareObject)
{
for (var i = 0; i < myArray.length; ++i)
{
// I don't think this is actually the right way to compare
if (myArray[i] == compareObject)
{
return i;
}
}
return -1;
}
var arr = ['john',1,'Peter'];
if(arr.indexOf('john') > -1)
{
//match. what to do?
console.log("found");
}
else
{
console.log("not found");//not found .. do something
}
var i = ['a', 'b', 'c']
if(i.indexOf('a') > -1)
{
///do this, if it finds something in the array that matches what inside the indexOf()
}
else
{
//do something else if it theres no match in array
}