3

我正在尝试在 mirth 通道的转换器中的 javascript 数组中找到一个字符串。当我尝试使用 indexOf 函数时,Mirth 会引发错误。我的理解是 indexOf 是浏览器添加的东西,而不是 javascript 语言本身的原生部分。(如何检查数组是否包含 JavaScript 中的对象?

那么 Mirth 不支持 array.indexOf 吗?有什么方法可以在 Mirth 中使用 .indexOf 吗?也许是另一种语法?还是我只需要遍历数组进行搜索?

4

4 回答 4

2

这就是我在 Mirth js 转换器中搜索数组的方式:

var Yak = [];
Yak.push('test');

if(Yak.indexOf('test') != -1)
{
    // do something
}

这会给你带来错误吗?

于 2012-08-20T17:57:22.327 回答
1

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;
}
于 2012-10-11T03:03:09.197 回答
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 
}

于 2020-02-17T14:19:32.570 回答
-1
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
}
于 2015-12-18T21:54:15.037 回答