0

この状況は、jQuery を使用する Google アナリティクス プラグインを、mootools を使用するサイトに押し込もうとしたときに発生しました。

jQuery コードは、問題のないコード内のループと同様のループを使用します。

http://jsfiddle.net/RzBh5/2/

var myData = [[20130105,0,0],[20130106,0,0],[20130107,0,0],[20130108,3,44],[20130109,2,6],[20130110,0,0]]
for (var r in myData) {
$('results').set('html',$('results').get('html') + '<br>' + myData[r][0] + ' - ' + r);
}

Mootools の同じループは、配列クラスに追加するすべての新しいメソッドを、作成した配列に追加します。誰かが何が起こっているのか、そしてこのループを通常のJavaScriptまたはjQueryで書き直して起こらないようにする方法を説明できますか?

正常に動作するこのループを実行する「mootools」の方法は次のとおりです。

Array.each(myData, function(stuff, index){
$('resultsMoo').set('html',$('resultsMoo').get('html') + '<br>' + stuff[0]);
});

フィドルは、配列オブジェクトの内容を吐き出します。

ありがとう

4

1 に答える 1

4

単純なfor ... inループは、プロトタイプを介して継承されたものを含む、オブジェクトのすべてのメソッドとプロパティを一覧表示します。

それぞれのオブジェクトに固有のプロパティとメソッドにループを制限するには、 を使用できますhasOwnProperty()

ただし、この場合、ループするのは単なる配列であり、次のforような単純なループを使用する必要があります。

for( var i=0; i<myData.length; i++ ) {
   $('results').set('html',$('results').get('html') + '<br>' + myData[i][0] + ' - ' + i );
}

編集

配列は、他のオブジェクトと同様に、その核となるオブジェクトです。JavaScript には と呼ばれるネイティブ オブジェクトがありArray、すべての配列はこのオブジェクトから関数を継承します。

したがって、ループを使用すると、値などの配列自体の新しいプロパティだけでなくfor ... in、親オブジェクトのすべてのメソッドがリストされます。Array

この説明が少しでもお役に立てば幸いです。

于 2013-01-22T13:25:41.963 に答える