2012-07-25 81 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 
} 
相關問題