値のインターン
InternMapクラスとInternSetクラスは、それぞれネイティブのJavaScriptのMapクラスとSetクラスを拡張したもので、キーの同等性を判断する際にSameValueZeroアルゴリズムをバイパスすることで、日付やその他のプリミティブでないキーを許可します。d3.group、d3.rollup、d3.indexは、ネイティブのMapではなくInternMapを使用します。
new InternMap(iterable, key)
js
const valueByDate = new d3.InternMap([
[new Date("2021-01-01"), 42],
[new Date("2022-01-01"), 12],
[new Date("2023-01-01"), 45]
]);
例 · ソース · 指定された[key, value]エントリのiterableを使用して、新しいMapを構築します。キーは、プリミティブでない値に対してデフォルトでobject.valueOfになる指定されたkey関数を使用してインターンされます。たとえば、特定の日付でキー付けされた値を取得するには
js
valueByDate.get(new Date("2022-01-01")) // 12
new InternSet(iterable, key)
js
const dates = new d3.InternSet([
new Date("2021-01-01"),
new Date("2022-01-01"),
new Date("2023-01-01")
]);
例 · ソース · 指定された値のiterableを使用して、新しいSetを構築します。値は、プリミティブでない値に対してデフォルトでobject.valueOfになる指定されたkey関数を使用してインターンされます。たとえば、特定の日付をクエリするには
js
dates.has(new Date("2022-01-01")) // true