0

リスト/配列から特定のアイテムを検索または選択したい。そのため、フラッシュでAS3を検索する機能を構築する際に行き詰まりました..この問題を解決するのを手伝ってください...よろしくお願いします

var ar:Array = new Array();
ar=[ "bhati", "malav", "vinod"];

//Searching Function
function findIndexOfValue( array:Array, _value:* ):int {
    var _length:uint = array.length;
    for(var i:uint=0; i < _length; i++) {
        if(array[i] == _value) {
            return i;
        }
        else{
            return -1;
        }
    }
}

trace(findInndexOfValue( ar, "bhati" )); // it should output 0 .
//compiler error:- 1170:Function doesn't return a value., I tried my best, but unable to solve this.
4

2 に答える 2

2

なぜこれを気にするのですか?この機能は、AS3のArrayクラスに組み込まれています(すべてではないにしても、ほとんどのOOP言語)。

trace( this.ar.indexOf( "bhati" ) ); //will output 0 

Array#indexOf()

スクリプトが機能しない理由については、値を返す必要があります。条件文またはループですべての戻り値を持つことはできません。関数の基本レベル内に戻りがある必要があります。

編集:関数を詳しく調べたところ、戻り値だけでなく、関数に問題があります。常に値を返すため、配列の最初の項目を超えることはありません(else条件付きのおかげで)。elseビットを削除し、その中のreturnをforループの実行後に移動するだけで、indexOfがどのように機能するかを大まかに複製できます。

于 2012-10-25T16:28:58.067 に答える
2

どうですか

function findIndexOfValue( array:Array, _value:* ):int {
    var _length:uint = array.length;
    for(var i:uint=0; i < _length; i++) {
        if(array[i] == _value) {
            return i;
        }
    }
    return -1;
}
于 2012-10-25T16:29:31.270 に答える