javascript Objectでmap,filter,reduceなどを使いたい....。
配列にはあるけど、Objectにはない....。
が
Object.protorype.filter = funcion(){ }
とかprototypeで生やしたいところだが、Objectはすべての型の基本なので
不用意に生やすと悲惨なことに。
例えばArray ObjectはObjectを継承しているので、Array.filterが動かなくなる。
なのでlodash(underscorejs)を使うのが無難かな..。
これだとメソッドチェインできないけど....。
- ネイティブ関数だけでやるなら、Object.keys使ってkeyの配列を作ってそれをmapし
mapの中で、またObjectを呼び出して処理する....。
Object.keys(myObject).map(function(value, index) { myObject[value] *= 2; });
Object.prototype.pick = function(arr) { var _this = this; var obj = {}; arr.forEach(function(key){ obj[key] = _this[key]; }); return obj; };
どうしてもメソッドチェイン使いたければ、継承先の型のメソッド名が被らないか確認した上でprototypeで生やしておいてもいいかも
pickあたりは良く使いそう。
- jquery - JavaScript: filter() for Objects - Stack Overflow
- http://note.chiebukuro.yahoo.co.jp/detail/n145916
- lodashでよく使う関数まとめ - matsukaz's blog
- Lodash: 10 Javascript Utility Functions That You Should Probably Stop Rewriting | Colin Toh
- javascript - map function for objects (instead of arrays) - Stack Overflow