在数组中搜索字符串并在AS3中返回索引

时间:2012-01-20 20:46:27

标签: arrays flash actionscript-3 search indexof

我想搜索数组以查看它是否包含特定字符串,然后获取结果的索引。

例如,如果我有:

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

我希望能够搜索“oran”并获得2回。关于如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分: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

要搜索单词的一部分,可以为较大的列表输入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
}

答案 1 :(得分: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