monolithic kernel

JavaScriptでArrayの反復メソッドを利用する

Arrayにあるコールバック関数を引数にとる反復メソッドのメモ。これらのメソッドがあるとないとでは書きやすさがぜんぜん違ってくると思います。

なお、今回紹介するメソッドはすべてIE8以下では定義されていませんが、以下のページで古いブラウザ向けにJavaScriptで同じ処理を実装したコードが紹介されているので、それをコードの先頭に貼りつければ利用できるようになります。

Array - MDC Docs

forEach

すべての要素について関数を適用します。

Ruby

array.each do |item|
  # ...
end

JavaScript

array.forEach(function(item) {
  //  ...
});

map

すべての要素について関数を呼び出した結果からなる配列を作成して返します。

Ruby

result = array.map {|item|
  # ...
}

JavaScript

result = array.map(function(item) {
  // return ...;
});

filter

すべての要素のうち関数がtrueを返した要素からなる配列を作成して返します。

Ruby

result = array.select {|item|
  # ...
}

JavaScript

result = array.filter(function(item) {
  // return ...;
});

some

条件を満たす要素が1つでもある場合にtrueを返します。

Ruby

result = array.any? {|item|
  # ...
}

JavaScript

result = array.some(function(item) {
  // return ...;
});

every

すべての要素が条件を満たす場合にtrueを返します。

Ruby

result = array.all? {|item|
  # ...
}

JavaScript

result = array.every(function(item) {
  // return ...;
});

reduce

前の要素に対して関数を呼び出した結果をcurrentとしてすべての要素について関数を適用し、最後の結果を返します。

Ruby

result = array.inject([init]) {|current, item|
  # ...
 }

JavaScript

result = array.reduce(function(current, item) {
  // return ...;
}[, init]);