1
var myArray = ['burak', 'mirhan', new Date(), 'ibrahim'];


for (var i = 0; i <= myArray[i].toString ().length; i++) {
    alert (myArray [i].toString ().length); 
}

上記のコードを書きました。できます。しかし、firebug は「myArray[i] が定義されていません」と警告します。私はそれを解決することはできません。これについて私を助けてもらえますか?あなたが理解できるように、私はJavaScriptに少し慣れていません。勉強しようと思いますのでよろしくお願いします。

4

4 に答える 4

4

配列を反復処理するときは、配列の現在の要素の文字列の長さではなく、単に配列の長さを確認する必要があります。

for (var i = 0; i < myArray.length; i++) 
于 2012-11-01T00:08:30.513 に答える
2
var myArray = ['burak', 'mirhan', new Date(), 'ibrahim'];


for (var i = 0, len = myArray.length; i < len; i++) {
    console.log(myArray[i]);
};

あなたがJSエフィシェナードなら:)

于 2012-11-01T00:09:50.173 に答える
2

JavaScript では、配列インデックスは から始まり0、配列の.lengthプロパティは現在の最大要素インデックスよりも 1 つ大きくなります。したがって、4 つの連続した要素を持つ配列の場合、.lengthは 4 になり、要素のインデックスは 0、1、2、および 3 になります。

0からまでループを実行するように設定する必要があるため、ではなく を.length - 1使用します。i < myArray.lengthi <= myArray[i].toString ().length

for (var i = 0; i < myArray.length; i++)

コードがそのエラー以外に機能していた理由は、配列自体の長さではなく、配列内の要素の値の長さに対してi <= myArray[i].toString ().lengthテストしていたためです。したがって、最初の反復でが 0 の場合、0 が配列の最初の要素の長さ以下かどうかをテストし、2 回目の反復でが 2 番目の要素の長さより小さいかどうかをテストします。配列内のすべての項目が配列自体の長さよりも大きいため、ループはすべての要素を反復処理しましたが、ループに到達すると、存在しない要素をテストしようとしました。itoString()ii.toString().lengthi4

于 2012-11-01T00:42:24.160 に答える
1

配列内の各項目をループしたいと仮定すると、配列の長さを取得する必要があります。

var myArray = ['burak', 'mirhan', new Date(), 'ibrahim'];


for (var i = 0; i < myArray.length; i++) {
    alert (myArray [i].toString ().length); 
}
于 2012-11-01T00:08:55.090 に答える