3

楽しいチャンネルのトランスフォーマーで、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 に答える