2012-01-20 41 views
1

我想要搜索數組以查看它是否包含特定的字符串,然後獲取結果的索引。在數組中搜索字符串並返回AS3中的索引

舉例來說,如果我有:

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

我希望能夠搜索「奧蘭」,並獲得2回。任何想法如何做到這一點?

回答

4

你可以做這樣的事情:

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 
} 

然後只要你想找到這樣稱呼它:

findInArray("oranges"); // Returns 2 

要搜索詞的一部分可以pontentially返回undesiderd結果更大的名單,但你可以做到以下幾點:

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