inazuma code :オブジェクトのメソッド
オブジェクト型(object
)には、プロパティの追加・削除・取得・反復処理などの操作のためのメソッドが用意されています。
一部のメソッドはオブジェクトを直接変更する 破壊的操作 です。
メソッド一覧
メソッド | 引数 | 返り値 | 説明 |
---|---|---|---|
merge(other) | object other | object (this) | 他のオブジェクトのプロパティをマージ(同名キーは上書き、破壊的) |
map(callback) | function callback(value, key):mixed | object | 各プロパティを変換した新しいオブジェクトを返す |
filter(callback) | function callback(value, key):bool | object | 条件を満たすプロパティのみ抽出した新しいオブジェクトを返す |
reduce(callback, initial) | function callback(acc, value, key):mixed, mixed initial | mixed | 左から右にプロパティを集約 |
has(key) | string|int key | boolean | 指定キーが存在するか判定 |
is_callable(key) | string|int key | boolean | 指定キーが存在し、関数として呼び出せるか判定 |
keys() | なし | array | プロパティ名の配列を返す |
values() | なし | array | プロパティ値の配列を返す |
entries() | なし | array | [key, value] の配列を返す |
get(key) | string|int key | mixed | 指定キーの値(存在しない場合は null ) |
set(key, value) | string|int key, mixed value | object (this) | プロパティを設定(破壊的) |
remove(key) | string|int key | object (this) | 指定キーを削除(破壊的) |
size() | なし | int | プロパティの数を返す |
使用例:
// マージ(破壊的)
let obj = { a: 1, b: 2 };
obj->merge({ b: 3, c: 4 });
// obj = { a: 1, b: 3, c: 4 }
// map(非破壊的)
let newObj = obj->map((value, key) => value * 2);
// newObj = { a: 2, b: 6, c: 8 }
// filter(非破壊的)
obj->filter((value, key) => key != "b");
// => { a: 1, c: 4 }
// reduce
obj->reduce((acc, value) => acc + value, 0);
// => 8
// プロパティ存在確認
obj->has("a"); // true
obj->is_callable("foo"); // false(関数でない)
// keys / values / entries
obj->keys(); // ["a", "b", "c"]
obj->values(); // [1, 3, 4]
obj->entries(); // [["a", 1], ["b", 3], ["c", 4]]
// get / set / remove
obj->get("a"); // 1
obj->set("d", 5); // obj = { a: 1, b: 3, c: 4, d: 5 }
obj->remove("b"); // obj = { a: 1, c: 4, d: 5 }
// size
obj->size(); // 3
仕様補足
merge()
・set()
・remove()
は呼び出し元オブジェクトを直接変更する破壊的操作です。map()
・filter()
は新しいオブジェクトを返し、元のオブジェクトは変更されません。reduce()
・map()
・filter()
のコールバックは(value, key)
の順で引数を受け取れます。keys()
・values()
・entries()
は結果を配列で返すため、さらに配列メソッドをチェインできます。is_callable()
はオブジェクトのプロパティが関数かどうかを判定できます。