t_wの輪郭

Feedlyでフォローするボタン
Map
写像の向きを逆転させない方法では大丈夫です逆方向のMap客体を作る方法は,元が非単射だった場合に危なそう

ここで問題になっているのは写像が単射かどうかなので,処理のあいだに写像の向きを変えていない場合,(直接関係しないJS函数の諸性質に気をつけていれば)情報が消えることはないです。


ちなみに,

entriesから配列を生成してfindでvalueを探す

と題されている方法だと,(単射か否かではなく)Array.prototype.find()の性質により,先勝ちで情報が消えます。


Array.prototype.reduce()とかを使えばよさそう?

const map = new Map([
['one', 'ヒ'],
['two', 'フ'],
['three', 'ミ'],
[1, 'ヒ']
]);

[...map.entries()].reduce((p, [k, v]) => v == 'ヒ' ? p.concat(k) : p, [])
▸ Array [ "one", 1 ]

/* filter+mapでもいける */
[...map.entries()].filter(([k, v]) => v == 'ヒ').map($ => $[0])
▸ Array [ "one", 1 ]