コンテンツへスキップ

値のインターン

InternMapクラスとInternSetクラスは、それぞれネイティブのJavaScriptのMapクラスとSetクラスを拡張したもので、キーの同等性を判断する際にSameValueZeroアルゴリズムをバイパスすることで、日付やその他のプリミティブでないキーを許可します。d3.groupd3.rollupd3.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