データの変換
配列を変換し、新しい配列を生成します。
cross(...iterables, reducer)
例 · ソースコード · 指定されたiterablesの直積を返します。
d3.cross([1, 2], ["x", "y"]) // [[1, "x"], [1, "y"], [2, "x"], [2, "y"]]
reducerが指定されている場合、指定された各iterablesからの要素の組み合わせごとに呼び出され、対応する縮約値を返します。
d3.cross([1, 2], ["x", "y"], (a, b) => a + b) // ["1x", "1y", "2x", "2y"]
merge(iterables)
例 · ソースコード · 指定されたiterablesのイテラブルを新しいフラット配列にマージします。このメソッドは、組み込みのarray.concatメソッドに似ていますが、配列の配列やイテラブルのイテラブルがある場合に便利です。
d3.merge([[1], [2, 3]]) // [1, 2, 3]
d3.merge(new Set([new Set([1]), new Set([2, 3])])) // [1, 2, 3]
pairs(iterable, reducer)
例 · ソースコード · 指定されたiterableから、隣接する要素のペアの配列を順序どおりに返します。指定されたイテラブルに2つ未満の要素がある場合は、空の配列を返します。
d3.pairs([1, 2, 3, 4]) // [[1, 2], [2, 3], [3, 4]]
reducer関数が指定されている場合、iterableの要素i - 1と要素iが順番に渡されます。
d3.pairs([1, 1, 2, 3, 5], (a, b) => b - a) // [0, 1, 1, 2]
transpose(matrix)
例 · ソースコード · zip演算子を2次元行列の転置として使用します。
d3.transpose([["Alice", "Bob", "Carol"], [32, 13, 14]]) // [["Alice", 32], ["Bob", 13], ["Carol", 14]]
d3.transpose([["Alice", 32], ["Bob", 13], ["Carol", 14]]) // [["Alice", "Bob", "Carol"], [32, 13, 14]]
zip(...arrays)
例 · ソースコード · 配列の配列を返します。i番目の配列には、引数arraysの各配列のi番目の要素が含まれています。返される配列の長さは、arrays内の最短の配列の長さに切り捨てられます。arraysに1つの配列のみが含まれる場合、返される配列には1要素の配列が含まれます。引数が無い場合、返される配列は空です。
d3.zip(["Alice", "Bob", "Carol"], [32, 13, 14]) // [["Alice", 32], ["Bob", 13], ["Carol", 14]]
filter(iterable, test)
ソースコード · 指定されたtest関数がtrueを返す、iterableからの値を順番に含む新しい配列を返します。
d3.filter(new Set([0, 2, 3, 4]), (d) => d & 1) // [3]
array.filterに似ていますが、任意のイテラブルで動作します。
map(iterable, mapper)
ソースコード · 指定されたmapper関数で定義されたとおりに、iterableからマッピングされた値を順番に含む新しい配列を返します。
d3.map(new Set([0, 2, 3, 4]), (d) => d & 1) // [0, 0, 1, 0]
array.mapに似ていますが、任意のイテラブルで動作します。
reduce(iterable, reducer, initialValue)
ソースコード · 指定されたreducer関数で定義された縮約値を返します。この関数は、iterableの各値に対して繰り返し呼び出され、現在の縮約値と次の値が渡されます。
d3.reduce(new Set([0, 2, 3, 4]), (p, v) => p + v, 0) // 9
array.reduceに似ていますが、任意のイテラブルで動作します。