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

inazuma code :オブジェクトのメソッド

オブジェクト型(object)には、プロパティの追加・削除・取得・反復処理などの操作のためのメソッドが用意されています。

一部のメソッドはオブジェクトを直接変更する 破壊的操作 です。

メソッド一覧

メソッド引数返り値説明
merge(other)object otherobject(this)他のオブジェクトのプロパティをマージ(同名キーは上書き、破壊的)
map(callback)function callback(value, key):mixedobject各プロパティを変換した新しいオブジェクトを返す
filter(callback)function callback(value, key):boolobject条件を満たすプロパティのみ抽出した新しいオブジェクトを返す
reduce(callback, initial)function callback(acc, value, key):mixed, mixed initialmixed左から右にプロパティを集約
has(key)string|int keyboolean指定キーが存在するか判定
is_callable(key)string|int keyboolean指定キーが存在し、関数として呼び出せるか判定
keys()なしarrayプロパティ名の配列を返す
values()なしarrayプロパティ値の配列を返す
entries()なしarray[key, value] の配列を返す
get(key)string|int keymixed指定キーの値(存在しない場合は null
set(key, value)string|int key, mixed valueobject(this)プロパティを設定(破壊的)
remove(key)string|int keyobject(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() はオブジェクトのプロパティが関数かどうかを判定できます。