JavaScriptでArrayの反復メソッドを利用する
Arrayにあるコールバック関数を引数にとる反復メソッドのメモ。これらのメソッドがあるとないとでは書きやすさがぜんぜん違ってくると思います。
なお、今回紹介するメソッドはすべてIE8以下では定義されていませんが、以下のページで古いブラウザ向けにJavaScriptで同じ処理を実装したコードが紹介されているので、それをコードの先頭に貼りつければ利用できるようになります。
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]);