メインコンテンツまでスキップ

inazuma code :配列のメソッド

配列型(array)には、検索・変換・ソートなど多様な操作のメソッドが用意されています。

配列を返すメソッドは多くの場合、新しい配列を返し、元の配列は変更されません。

一方、pushpopunshiftshiftclear など一部は呼び出し元の配列を直接変更します(破壊的操作)。

メソッド一覧

メソッド引数返り値説明
join(separator)string separatorstring配列要素を結合して文字列化
slice(offset, length?)int offset, int? lengtharray指定範囲の要素を新しい配列として返す
reverse()なしarray要素の順序を逆にした新しい配列を返す
sort(callback?)function? callback(valueA, valueB):intarray要素を昇順(または比較関数で定義した順序)に並び替えた新しい配列を返す
filter(callback)function callback(value, key):boolarray条件を満たす要素のみ抽出
map(callback)function callback(value, key):mixedarray各要素を変換した新しい配列を返す
flat_map(callback)function callback(value, key):arrayarray各要素を配列に変換し、フラット化して返す
flat()なしarrayネスト配列を再帰的に1次元配列に展開
chunk(size)int sizearray指定サイズごとに配列を分割(size > 0 必須)
zip(otherArray)array otherArrayarray2つの配列をインデックスごとにペア化
unique()なしarray重複を削除した新しい配列を返す
reduce(callback, initial)function callback(acc, value, key):mixed, mixed initialmixed左から右に要素を集約
index_of(value)mixed valueint最初に一致した要素のインデックス(見つからない場合は -1
includes(value)mixed valueboolean指定値が含まれるか判定
some(callback)function callback(value, key):boolboolean条件を満たす要素が1つでもあれば true
every(callback)function callback(value, key):boolboolean全ての要素が条件を満たせば true
first()なしmixed最初の要素(存在しない場合は null
last()なしmixed最後の要素(存在しない場合は null
push(...values)mixed valuesarray(this)末尾に要素を追加(破壊的)
pop()なしmixed末尾の要素を取り出して削除(破壊的)
unshift(...values)mixed valuesarray(this)先頭に要素を追加(破壊的)
shift()なしmixed先頭の要素を取り出して削除(破壊的)
has(index)int | string indexboolean指定キーが存在するか判定
clear()なしarray(this)全要素を削除(破壊的)
size()なしint要素数を返す

使用例:

[1, 2, 3]->join(", ");        // "1, 2, 3"
[1, 2, 3, 4, 5]->slice(1, 3); // [2, 3, 4]
[1, 2, 3]->reverse(); // [3, 2, 1]

[1, 2, 3]->map(x => x * 2); // [2, 4, 6]
[1, 2, 3]->filter(x => x > 1); // [2, 3]
[1, 2, 3]->flat_map(x => [x, x]); // [1, 1, 2, 2, 3, 3]

[[1, 2], [3, 4]]->flat(); // [1, 2, 3, 4]
[1, 2, 3, 4, 5]->chunk(2); // [[1, 2], [3, 4], [5]]

[1, 2]->zip(["a", "b"]); // [[1, "a"], [2, "b"]]
[1, 2, 2, 3]->unique(); // [1, 2, 3]

[1, 2, 3]->reduce((acc, v) => acc + v, 0); // 6

[1, 2, 3]->index_of(2); // 1
[1, 2, 3]->includes(4); // false

[1, 2, 3]->some(v => v > 2); // true
[1, 2, 3]->every(v => v > 0); // true

[1, 2, 3]->first(); // 1
[1, 2, 3]->last(); // 3

let arr = [1, 2];
arr->push(3); // arr = [1, 2, 3]
arr->pop(); // 3, arr = [1, 2]

arr->unshift(0); // arr = [0, 1, 2]
arr->shift(); // 0, arr = [1, 2]

arr->has(1); // true
arr->clear(); // arr = []
[].size(); // 0

仕様補足

  • mapfilterflat_mapreduce のコールバックは (value, key) の 2 つの引数を受け取れます。
  • flat_map の戻り値が配列でない場合は、通常の要素として追加されます。
  • chunk() のサイズは 1 以上でなければエラーになります。
  • zip() は短い方の配列の長さに揃えてペアを作ります。
  • pushunshiftclear などは配列を直接変更する破壊的操作です。
  • slicereversesort などは新しい配列を返し、元の配列は変更されません。