33
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Underscore.jsの配列操作いろいろ

Posted at

Underscoreを使う際のTips的な(配列編)

記述テンプレ

_.○○○○(array);

_.first(array, [n])

配列の先頭のn個を取得する。

_.first([1, 2, 3, 4, 5], 2); => [1, 2]

_.last(array, [n])

配列の最後尾のn個を取得する。

_.last([1, 2, 3, 4, 5], 2); => [4, 5]

_.initial(array, [n])

配列の最後尾のn個を除いた配列を取得する。

_.initial([1, 2, 3, 4, 5], 2); => [1, 2, 3]

_.rest(array, [n])

配列の先頭からn個を除いた配列を取得する。

_.rest([1, 2, 3, 4, 5], 2); => [3, 4, 5]

_.compact(array)

配列から不正な値(false, null, 0, "", undefined, NaN)を除外する。

_.compact([0, "a", 1, "", true, false]); => ["a", 1, true]

_.flatten(array, [shallow])

配列の階層を均す。[shallow]がtrueなら1階層分だけ均す。

_.flatten([1, 2, [[3, 4], 5]]); => [1, 2, 3, 4, 5]
_.flatten([1, 2, [[3, 4], 5]], true); => [1, 2, [3, 4], 5]

_.without(array, *values)

配列から引数の値を除外する。

_.without([1, 2, 3, 4, 5], 2, 3); => [1, 4, 5]

_.union(*arrays)

複数の配列を結合する。重複分は除外され、一意の値として抽出される。

_.union([1, 2, 3, 4, 5], [1, 3, 5, 7, 9], [10, 5, 9]); => [1, 2, 3, 4, 5, 7, 9, 10]

_.intersection(*arrays)

全ての配列に存在する値のみを抽出する。

_.intersection([1, 2, 3, 4, 5], [1, 3, 5, 7, 9], [10, 5, 9]); => [5]

_.difference(array, *others)

他の配列に存在する値を除外する。withoutの配列版。

_.difference([1, 2, 3, 4, 5], [1, 3, 5, 7, 9], [10, 5, 9]); => [2, 4]

_.uniq(array)

重複分を除外して配列内の値を一意にする。

_.uniq([1, 2, 3, 2, 5]); => [1, 2, 3, 5]

_.zip(array)

複数の配列をインデックス番号ごとにまとめる。はみ出している項目については他は未定義。
.zip.apply(, array)では配列の行列反転が可能。

_.zip(["A", "B", "C"], [200, 100, 150, 1000], ["M", "F", "M"]);
=> [["A", 200, "M"], ["B", 100, "F"], ["C", 150, "M"], [undefined, 1000, undefined]]
_.zip.apply(_, ["A", "B", "C"]);
=> [["A"], ["B"], ["C"]]

_.object(list, [values])

keyとvalueの関係にオブジェクト化する。はみ出しているvalueについては無視される。

_.object(["A", "B"], [200, 100, 150]); => {A: 200, B: 100}
_.object([["A", 200], ["B", 100]]); => {A: 200, B: 100}

_.indexOf(array, value, [isSorted])

valueの値が最初に出てくるインデックス番号を取得する。
isSorted指定があればそのインデックス番号から後をサーチする。

_.indexOf([1, 2, 3, 4, 5, 4, 3, 2, 1], 3); => 2

_.lastIndexOf(array, value, [fromIndex])

valueの値が最初に出てくるインデックス番号を取得する。
fromIndex指定があればそのインデックス番号から後をサーチする。

_.lastIndexOf([1, 2, 3, 4, 5, 4, 3, 2, 1], 3); => 6

_.sortedIndex(list, value, [iteratee], [context])

valueが整列された配列のどこに挿入されるかのインデックス番号を取得する。

_.sortedIndex([1, 5, 10, 50, 100, 1000, 5000, 10000], 500); => 5

_.range([start], stop, [step])

規則的な数列を作成できる。2ずつとか5ずつとかにしたければ[step]を定義。

_.range(5); => [1, 2, 3, 4, 5]
_.range(3, 8); => [3, 4, 5, 6, 7]
_.range(3, 30, 3); => [3, 6, 9, 12, 15, 18, 21, 24, 27]
33
27
0

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
33
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?