政略結婚じゃないよ。

コンピュータや音楽のことなど

全体表示

[ リスト ]

FireFox などでは配列に forEach, map, filter, reduce など
強力な関数が用意されている。
IE では残念ながら用意されていないので、いろいろ調べて
自作の(エラーチェックはあんまり厳密に行っていない)
コードで使えるようにしている。

初めのうちは IE に実装されていないことを恨めしく
思ったが、何度も何度もあちこちで書いていたため
今では、ほとんどの有名な関数をフルスクラッチで
書けるようになった。ありがとう>IE

いろいろなことが filter, map, join の組み合わせで
こなせることに感激していたが、最近では特に reduce が
気に入っている。
でも、どこの解説を読んでもあまり的確な例が提示されて
いないように感じる。

だいたい下記のような例が最初に説明されている。
でも、これだと普通の加算と本質的に何ら変わらない。
[1,2,3].reduce(function(rv,x){
  return rv+x;
})
==> 6

次のように空文字列を初期値として第2引数に渡せば
文字列として連結された値が返ってくる。
[1,2,3].reduce(function(rv,x){
  return rv+x;
}, "")
==> 123

また、集計される側の変数 rv (おそらく return value の略)
を括弧で囲んで連結すると下記のようになる。
[1,2,3].reduce(function(rv,x){
  return "("+rv+") "+x;
})
==> ((1) 2) 3

さらに空の配列を初期値にして配列の各値を演算した結果を
push すれば map と全く同じこともできてしまう。
[1,2,3].reduce(function(rv,x){
  rv.push(x*x);
  return rv;
}, [])
==> [1,4,9]

まとめ:
reduce 最高、最強。

閉じる コメント(0)

コメント投稿

顔アイコン

顔アイコン・表示画像の選択

名前パスワードブログ
絵文字
×
  • オリジナル
  • SoftBank1
  • SoftBank2
  • SoftBank3
  • SoftBank4
  • docomo1
  • docomo2
  • au1
  • au2
  • au3
  • au4
投稿

.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事