コンテンツへスキップ

データの変換

配列を変換し、新しい配列を生成します。

cross(...iterables, reducer)

· ソースコード · 指定されたiterables直積を返します。

js
d3.cross([1, 2], ["x", "y"]) // [[1, "x"], [1, "y"], [2, "x"], [2, "y"]]

reducerが指定されている場合、指定された各iterablesからの要素の組み合わせごとに呼び出され、対応する縮約値を返します。

js
d3.cross([1, 2], ["x", "y"], (a, b) => a + b) // ["1x", "1y", "2x", "2y"]

merge(iterables)

· ソースコード · 指定されたiterablesのイテラブルを新しいフラット配列にマージします。このメソッドは、組み込みのarray.concatメソッドに似ていますが、配列の配列やイテラブルのイテラブルがある場合に便利です。

js
d3.merge([[1], [2, 3]]) // [1, 2, 3]
js
d3.merge(new Set([new Set([1]), new Set([2, 3])])) // [1, 2, 3]

pairs(iterable, reducer)

· ソースコード · 指定されたiterableから、隣接する要素のペアの配列を順序どおりに返します。指定されたイテラブルに2つ未満の要素がある場合は、空の配列を返します。

js
d3.pairs([1, 2, 3, 4]) // [[1, 2], [2, 3], [3, 4]]

reducer関数が指定されている場合、iterableの要素i - 1と要素iが順番に渡されます。

js
d3.pairs([1, 1, 2, 3, 5], (a, b) => b - a) // [0, 1, 1, 2]

transpose(matrix)

· ソースコード · zip演算子を2次元行列の転置として使用します。

js
d3.transpose([["Alice", "Bob", "Carol"], [32, 13, 14]]) // [["Alice", 32], ["Bob", 13], ["Carol", 14]]
js
d3.transpose([["Alice", 32], ["Bob", 13], ["Carol", 14]]) // [["Alice", "Bob", "Carol"], [32, 13, 14]]

zip(...arrays)

· ソースコード · 配列の配列を返します。i番目の配列には、引数arraysの各配列のi番目の要素が含まれています。返される配列の長さは、arrays内の最短の配列の長さに切り捨てられます。arraysに1つの配列のみが含まれる場合、返される配列には1要素の配列が含まれます。引数が無い場合、返される配列は空です。

js
d3.zip(["Alice", "Bob", "Carol"], [32, 13, 14]) // [["Alice", 32], ["Bob", 13], ["Carol", 14]]

filter(iterable, test)

ソースコード · 指定されたtest関数がtrueを返す、iterableからの値を順番に含む新しい配列を返します。

js
d3.filter(new Set([0, 2, 3, 4]), (d) => d & 1) // [3]

array.filterに似ていますが、任意のイテラブルで動作します。

map(iterable, mapper)

ソースコード · 指定されたmapper関数で定義されたとおりに、iterableからマッピングされた値を順番に含む新しい配列を返します。

js
d3.map(new Set([0, 2, 3, 4]), (d) => d & 1) // [0, 0, 1, 0]

array.mapに似ていますが、任意のイテラブルで動作します。

reduce(iterable, reducer, initialValue)

ソースコード · 指定されたreducer関数で定義された縮約値を返します。この関数は、iterableの各値に対して繰り返し呼び出され、現在の縮約値と次の値が渡されます。

js
d3.reduce(new Set([0, 2, 3, 4]), (p, v) => p + v, 0) // 9

array.reduceに似ていますが、任意のイテラブルで動作します。