2012-01-20 14 views
1

配列を検索して配列に特定の文字列が含まれているかどうかを確認し、結果のインデックスを取得します。例えば配列の文字列を検索し、AS3でインデックスを返します

私が持っていた場合、:

array[0] = "dogs"; 
array[1] = "cats"; 
array[2] = "oranges"; 

を私は「オラン」を検索し、2を取り戻すことができるようにしたいです。どのようにこれを行う上の任意のアイデア?あなたはこのような何か行うことができます

答えて

4

:pontentiallyためundesiderd結果を返すことができます単語の一部を検索するには

findInArray("oranges"); // Returns 2 

:あなたが何かを見つけたい時はいつでも次に

function findInArray(str:String):int { 
    for(var i:int = 0; i < array.length; i++){ 
     if(array[i] == str){ 
      trace("found it at index: " + i); 
      return i; 
     } 
    } 
    return -1; //If not found 
} 

は次のようにそれを呼び出しますより大きなリストを作成することができますが、次のようにすることができます:

function findInArrayPartially(str:String):int { 
    for(var i:int = 0; i < array.length; i++){ 
     if(array[i].indexOf(str) > -1){ 
      trace("found it at index: " + i); 
      return i; 
     } 
    } 
    return -1; //If not found 
} 
+0

私はこれを見ましたが、私は、文字列内の文字列を検索します。オレンジが "オレンジ"の一部なので、私はそれをちょうど "オレンジ"を与えた場合、それはまだ2を返すでしょう – adamzwakk

+0

私の編集を参照して、私は本質的に文字列を検索するように行を変更しました – ToddBFisher

1

別の方法:

var arr:Array = ["dogs", "cats", "oranges", "apples"]; 

function indexOfSubstring(array:Array, stringToFind:String):int 
{ 
    var answer:int = array.indexOf(stringToFind); 

    if (answer == -1) 
    { 
     var separator:String = "|"; 
     var arrayToString:String = array.join(separator); 
     var indexInString:int = arrayToString.indexOf(stringToFind); 

     if (indexInString != -1) 
     { 
      var shorterStr:String = arrayToString.substring(0, indexInString); 
      answer = shorterStr.split(separator).length - 1; 
     } 
    } 

    return answer; 
} 

trace(indexOfSubstring(arr, "oran")); // returns 2 
trace(indexOfSubstring(arr, "les")); // returns 3 
trace(indexOfSubstring(arr, "ts")); // returns 1 
trace(indexOfSubstring(arr, "broom")); // returns -1 
関連する問題