TOPシステム開発> 配列の操作
まるごとJavaScript&Ajax!
JavaScriptを洗練させるPrototype.js

第4回:関数の拡張と配列操作メソッド一覧
著者:ガイアックス  天野 仁史   2007/3/5
前のページ  1  2
配列の操作

   Prototype.jsでは一般的なJavaScriptのやり方とは違ったやり方で配列を操作することができます。JavaScriptのネイティブの配列のプロパティを拡張し、さまざまな操作を行うメソッドが追加されているのです。これをすべて使いこなせれば、きっと気持ちいいプログラミングの助けになってくれることでしょう。

   ここでは、それらの中でも代表的な、eachメソッド、collectメソッド、injectメソッド、invokeメソッドを紹介します。その他のメソッドについては具体例をあげられませんが、表1に簡単な説明を書きましたので使う際に参考になればと思います。
メソッド名 説明
each(iterator) それぞれの要素を引数としてiteratorを呼び出す。
eachSlice(number,iterator) 要素をnumberの個数ずつ配列化し、それを引数としてiteratorを呼び出す。
all(iterator) iteratorの返す値がすべてtrueならtrueを、ひとつでもfalseならfalseを返す。
any(iterator) iteratorの返す値がひとつでもtrueならtrueを、すべてfalseならfalseを返す。
collect(iterator) iteratorの返す値をすべてまとめて配列として返す。
detect(iterator) iteratorの返す値がtrueになる要素をひとつ返す。
findAll(iterator) iteratorの返す値がtrueになる要素をすべて配列として返す。
grep(pattern,iterator) patternにマッチする要素を抽出し配列として返す。もしiteratorが渡されていれば、すべての結果にiteratorを適用する。
include(object) 引数で渡されたobjectが含まれる場合trueを返す。
inGroupsOf(number,fillWith) 要素をnumberの個数ずつ配列化し、二次元配列を生成する。要素数がnumber個で割り切れない場合は最後の配列をnullで埋める。fillWithが指定されている場合は、nullの代わりにfillWithの値で埋める。
inject(memo,iterator) memoを第1引数、それぞれの要素を2引数として、iteratorを呼び出す。iteratorの返した値が次のiteratorのmemoになり、最終要素が返した値を返す。配列から、何らかのオブジェクトを生成する場合に用いる。
invoke(method[,…]) メソッド名を指定して、それぞれの要素のメソッドを呼び出す。すべての結果を配列として返す。2つ目以降の引数が指定された場合は、メソッド呼び出しの際の引数となる。
max(iterator) 数値として最大値である要素を返す。iteratorが指定されている場合は、iteratorの返す値が最大の要素を返す。
min(iterator) 数値として最小値である要素を返す。iteratorが指定されている場合は、iteratorの返す値が最小の要素を返す。
partition(iterator) それぞれの要素を引数としてiteratorを呼び出し、iteratorの返す値がtrueのものをまとめた配列を第1要素、falseのものをまとめた配列を第2要素に格納した配列の配列を返す。
pluck(property) プロパティ名を指定し、それぞれの要素のプロパティの値を取得し配列として返す。
reject(iterator) iteratorの返す値がfalseになる要素をすべて配列として返す。つまり、findAllの逆を行う。
sortBy(iterator) iteratorの返す値を数値として昇順に並び替えた配列を返す。
zip(array,…) 引数に渡された配列をマージし、二次元配列を生成する。たとえば、[1,2,3].zip([4,5,6],[7,8,9])のようにすると、[[1,4,7],[2,5,8],[3,6,9]]という配列が生成される。
clear() 要素をすべて削除し、空の配列にする。
first() 最初の要素を返す。
last() 最後の要素を返す。
compact() nullとundefinedを削除した配列を生成する。
flatten() 配列の要素を全て展開し、ひとつのフラットな配列を生成する。
without(object,…) 引数で指定した値と等しい要素をすべて削除した配列を生成する。
indexOf(object) 引数で指定した値と等しい要素の要素番号を返す。その値を含まない場合は-1を返す。
reverse(inline) 配列の要素を逆順にする。inlineがfalseの場合は、要素を逆順にした新しい配列を生成にする。inlineがtrueの場合はその配列自体を逆順にする。引数を省略した場合はtrueを指定したのと同じ動作をする。
reduce() 配列の要素数が1の場合、その要素を返す。配列の要素が0場合はundefinedを返す。それ以外の場合はその配列をそのまま返す。
uniq() 配列をユニーク化し、同じ値を持たない要素のない配列を生成する。
clone() 配列をコピーする。
map(iterator) collectメソッドのエイリアス。
find(iterator) detectメソッドのエイリアス。
select(iterator) findAllメソッドのエイリアス。
member(object) includeメソッドのエイリアス。

表1:配列操作メソッド一覧


次回は

   次回はeachメソッド、collectメソッド、injectメソッド、invokeメソッドについて、より詳しく解説していきます。

前のページ  1  2

株式会社ガイアックス 天野 仁史
著者プロフィール
株式会社ガイアックス   天野 仁史
渋谷で働くWebプログラマ。出身は石川県金沢市。21歳でプログラミングに出会い、IT戦士になることを決意。それからというもの、寝ても覚めてもプログラムを書き続け今に至る。はてなでamachangというidでブログを書いてます。

IT戦記
http://d.hatena.ne.jp/amachang/


INDEX
第4回:関数の拡張と配列操作メソッド一覧
  関数の拡張
配列の操作