inazuma code :配列のメソッド
配列型(array
)には、検索・変換・ソートなど多様な操作のメソッドが用意されています。
配列を返すメソッドは多くの場合、新しい配列を返し、元の配列は変更されません。
一方、push
・pop
・unshift
・shift
・clear
など一部は呼び出し元の配列を直接変更します(破壊的操作)。
メソッド一覧
メソッド | 引数 | 返り値 | 説明 |
---|---|---|---|
join(separator) | string separator | string | 配列要素を結合して文字列化 |
slice(offset, length?) | int offset, int? length | array | 指定範囲の要素を新しい配列として返す |
reverse() | なし | array | 要素の順序を逆にした新しい配列を返す |
sort(callback?) | function? callback(valueA, valueB):int | array | 要素を昇順(または比較関数で定義した順序)に並び替えた新しい配列を返す |
filter(callback) | function callback(value, key):bool | array | 条件を満たす要素のみ抽出 |
map(callback) | function callback(value, key):mixed | array | 各要素を変換した新しい配列を返す |
flat_map(callback) | function callback(value, key):array | array | 各要素を配列に変換し、フラット化して返す |
flat() | なし | array | ネスト配列を再帰的に1次元配列に展開 |
chunk(size) | int size | array | 指定サイズごとに配列を分割(size > 0 必須) |
zip(otherArray) | array otherArray | array | 2つの配列をインデックスごとにペア化 |
unique() | なし | array | 重複を削除した新しい配列を返す |
reduce(callback, initial) | function callback(acc, value, key):mixed, mixed initial | mixed | 左から右に要素を集約 |
index_of(value) | mixed value | int | 最初に一致した要素のインデックス(見つからない場合は -1 ) |
includes(value) | mixed value | boolean | 指定値が含まれるか判定 |
some(callback) | function callback(value, key):bool | boolean | 条件を満たす要素が1つでもあれば true |
every(callback) | function callback(value, key):bool | boolean | 全ての要素が条件を満たせば true |
first() | なし | mixed | 最初の要素(存在しない場合は null ) |
last() | なし | mixed | 最後の要素(存在しない場合は null ) |
push(...values) | mixed values | array (this) | 末尾に要素を追加(破壊的) |
pop() | なし | mixed | 末尾の要素を取り出して削除(破壊的) |
unshift(...values) | mixed values | array (this) | 先頭に要素を追加(破壊的) |
shift() | なし | mixed | 先頭の要素を取り出して削除(破壊的) |
has(index) | int | string index | boolean | 指定キーが存在するか判定 |
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
仕様補足
map
・filter
・flat_map
・reduce
のコールバックは(value, key)
の 2 つの引数を受け取れます。flat_map
の戻り値が配列でない場合は、通常の要素として追加されます。chunk()
のサイズは 1 以上でなければエラーになります。zip()
は短い方の配列の長さに揃えてペアを作ります。push
・unshift
・clear
などは配列を直接変更する破壊的操作です。slice
・reverse
・sort
などは新しい配列を返し、元の配列は変更されません。