简体   繁体   English

在数组中搜索字符串,然后在AS3中返回索引

[英]Search an array for a string and return the index in AS3

I want to search an array to see if it contains a specific string, and then get the index of the result. 我想搜索一个数组以查看它是否包含特定的字符串,然后获取结果的索引。

For example, if I had: 例如,如果我有:

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

I want to be able to search for "oran" and get 2 back. 我希望能够搜索“ oran”并取回2。 Any idea on how to do this? 关于如何执行此操作的任何想法?

You can do something like this: 您可以执行以下操作:

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
}

Then whenever you want to find something call it like: 然后,每当您想查找某些东西时,都可以像这样:

findInArray("oranges"); // Returns 2

To search for a part of the word can pontentially return undesiderd results for bigger lists, but you can do it with the following: 要搜索单词的一部分,可以潜在地返回不需要的结果以获取更大的列表,但是您可以使用以下方法做到这一点:

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
}

Another way to do it: 另一种方法是:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM