2012-07-25 82 views
2

我想在一个欢快的通道变压器的javascript数组中找到一个字符串。当我尝试使用indexOf函数时,Mirth会抛出一个错误。我的理解是,indexOf是浏览器添加的内容,而不是JavaScript语言本身的本地部分。 (How do I check if an array includes an object in JavaScript?有什么办法可以使用.indexOf来快速搜索javascript数组吗?

那么array.indexOf只是在Mirth中不被支持?在Mirth中有没有办法使用.indexOf?也许是一种替代语法?或者我需要通过数组循环搜索?

回答

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; 
} 
2

这是我的搜索阵列在欢乐JS变压器:

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

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

这是否给你错误?

+0

这个方法给我一个错误。我们使用的是Java 6,build 23和Mirth 1.8.2。如果你使用的是更新的东西,请告诉我。 – csj 2012-10-12 06:53:53

+0

我正在使用最新的快乐(2.2.1)。 – 2012-10-12 23:45:52

+1

原来是6.23之前的JVM在这里被打破了。在多玩一些并比较Java版本之后,我可以说我们的indexOf工作在6.23或更高版本。我认为它在6.04左右的时候还处于破裂状态。 – csj 2012-12-08 00:16:06

0
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 
} 
相关问题