LoginSignup
4
4

More than 5 years have passed since last update.

Javascriptでオブジェクトリストを扱う便利なもの集め(関数型プログラミング)

Last updated at Posted at 2015-06-17

最近はJavascriptも便利になったもので関数型のコーディングもできるようになった。

ただJavascriptのsyntaxにはどうもなれなくて、、なんでこういう書き方をする?と言われると「jsの特性」としか言えないので、いくつか整理

ほぼ自分が忘れた時に参考する自分用メモに近い
jQueryだろうが、AngularJSだろうが、関係なく使えるはず

// 基本オブジェクトというか連想配列で扱う
// 処理前後で引数のステータスを変えたくない

// リストのソート
// hogeが数字
function sort(array) {
  return array.concat().sort(function(x,y) { return x.hoge - y.hoge; });
}

// リストのソート
// hogeが文字
function sort(array) {
  return array.concat().sort(function(x,y) { return x.hoge.localeCompare(y.hoge); });
}

// リストの検索
// 例:未払いがあるかをチェック
function contains(array) {
  return array.map(function (e) { return e["status"]; }).indexOf("unpaid") >= 0;
}

// フィルター
// 例は100円以上のものを抽出
function filter(array) {
  return array.filter(function(x) { return x.cost > 100;});
}

// 繰り返し処理
// 例えば消費税計算(tax = 0.08)
function loopexec(array, tax) {
  return array.concat().forEach(function(x) { x.price = x.cost * (1 + tax);});
}

// 要素同士の計算
// 例えば総額の計算
function total(array) {
  return array.reduce(function(x,y) { return x.price + y.price;} );
}

大概のことが1行でできるのですっきりする。

prototypeとうまく調合すれば普通のオブジェクトみたいにもなりそうだけど、今回の目的ではないので割愛

いまときのブラウザーだと大概は支援しているはず。

chromeでは問題なく動作しました。

4
4
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4