3

好みの問題であることはわかっていますが、配列を反復処理するたびに for ループを使用するのは私の好みではありません。だから私はこれを思いついた:

Array.prototype.each = function(callback) {
  for (var i = 0; i < this.length; i++)
    callback(this[i]);
}

今私はできる:

[10, 20, 30].each(function(n) { console.log(n/10) })

後で、インターネットでこのアプローチを提案するヒントをいくつか見つけましたが、副作用がないかどうかはまだ疑問です. それは非常に明白なようで、それが私を心配しています:)

jQuery や Prototype などのライブラリは使用していません。私はNode.jsのコーディングをしています。

4

3 に答える 3

6

を使用することをお勧めしますforEach。最新のほとんどのブラウザーに実装されており、shim はMDNによって提供されます。

node.js では実装されているため (Chrome と同じ V8 エンジンを使用)、shim は必要ありません。

その使用法は次のようなものです。

arr.forEach( function( el ) {
    // play with "el"
} )

また、ES5 によって提供される新しい配列メソッドを確認することをお勧めします。

于 2012-04-29T12:48:56.443 に答える
3

これにはかなり大きな副作用があります

次のコードを実行すると

a = [10, 20, 30];
for (var i in a) {
    console.log(i + ": " + a[i]);
}

コンソール出力を確認すると、次のように表示されます。

0: 10
1: 20
2: 30
each: function (callback) {
  for (var i = 0; i < this.length; i++)
    callback(this[i]);
}

配列に対して実行できる for ループのタイプを制限します。

a = [10, 20, 30];
for (var i = 0; i < a.length; ++i) {
    console.log(a[i] + ": " + a[i]);
}
于 2012-04-29T12:50:02.570 に答える