【问题标题】:Search an array for a string and return the index in AS3在数组中搜索字符串并返回 AS3 中的索引
【发布时间】:2012-01-20 20:46:27
【问题描述】:

我想搜索一个数组,看它是否包含特定的字符串,然后得到结果的索引。

例如,如果我有:

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

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

【问题讨论】:

    标签: arrays flash actionscript-3 search indexof


    【解决方案1】:

    你可以这样做:

    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
    

    搜索单词的一部分可能会为更大的列表返回不需要的结果,但您可以使用以下方法:

    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
    }
    

    【讨论】:

    • 我看到了这个,但我想在一个字符串中找到一个字符串。就像我只给它“橙子”一样,它仍然会返回 2,因为“橙子”是“橙子”的一部分
    • 查看我的编辑,我只是​​更改了一行以基本上搜索字符串
    【解决方案2】:

    另一种方法:

    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
    

    【讨论】:

    • 虽然这可以在您知道字符串中可能包含什么内容的情况下工作,但如果您的数组中的字符串中包含分隔符,它可能会给出无效的结果。
    猜你喜欢
    • 1970-01-01
    • 2021-09-27
    • 2012-12-30
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 2014-06-13
    相关资源
    最近更新 更多