多次元 Map
を生成します。
[[[...keys], value], [[...keys], value], ...]
からなる三次元配列を第一引数に指定する事で多次元構造の Map
オブジェクトを返します。
new Map
に渡す配列の内、key
を配列で複数渡せる、と認識して頂ければOKです。
var map = createMultidimensionalMap([
[[false, false], 'BB'],
[[false, true], 'BA'],
[[true, false], 'AB'],
[[true, true], 'BB']
]);
console.log(map);
console.log(map.get(false).get(false)); // "BB"
console.log(map.get(false).get(true)); // "BA"
console.log(map.get(true).get(false)); // "AB"
console.log(map.get(true).get(true)); // "BB"
new Map
を基準にしており、渡せるキー/値に制限はありません。NaN
も同一判定できます。
var obj = {}, array = [],
map = createMultidimensionalMap([
[[obj, array, 'N'], 'OAN'],
[['N', 'Y', true], 'NYT'],
[[1, 'N', 'Y'], '1NY'],
[[NaN, NaN, NaN], 'NaN']
]);
console.log(map);
console.log(map.get(obj).get(array).get('N')); // "OAN"
console.log(map.get('N').get('Y').get(true)); // "NYT"
console.log(map.get(1).get('N').get('Y')); // "1NY"
console.log(map.get(NaN).get(NaN).get(NaN)); // "NaN"