@william_stoltenberg
Метод nest()
в D3.js используется для группировки данных на основе одного или нескольких ключей и создания иерархической структуры данных.
Синтаксис метода nest()
выглядит следующим образом:
1 2 3 4 5 6 7 |
d3.nest() .key(function(d) { /*...*/ }) .sortKeys(function(a, b) { /*...*/ }) .key(function(d) { /*...*/ }) .sortKeys(function(a, b) { /*...*/ }) /*...*/ .entries(data); |
Метод nest()
создает объект, который позволяет цепочку вызовов методов key()
и sortKeys()
для указания ключей группировки и порядка сортировки.
Метод key()
принимает функцию, которая принимает каждый элемент данных и возвращает ключ, по которому элементы будут группироваться. Метод sortKeys()
определяет порядок сортировки ключей.
Метод nest()
также может быть использован для создания вложенных группировок, путем добавления дополнительных вызовов key()
и sortKeys()
.
Наконец, метод entries()
создает массив объектов, каждый из которых представляет группу данных с ключом и вложенными данными.
Пример использования метода nest()
в D3.js для группировки данных по двум ключам:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var data = [ {category: "A", subcategory: "X", value: 10}, {category: "A", subcategory: "Y", value: 20}, {category: "B", subcategory: "X", value: 30}, {category: "B", subcategory: "Y", value: 40} ]; var nestedData = d3.nest() .key(function(d) { return d.category; }) .sortKeys(d3.ascending) .key(function(d) { return d.subcategory; }) .sortKeys(d3.ascending) .entries(data); |
Результат будет массив объектов, который выглядит следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[ { key: "A", values: [ {key: "X", values: [{category: "A", subcategory: "X", value: 10}]}, {key: "Y", values: [{category: "A", subcategory: "Y", value: 20}]} ] }, { key: "B", values: [ {key: "X", values: [{category: "B", subcategory: "X", value: 30}]}, {key: "Y", values: [{category: "B", subcategory: "Y", value: 40}]} ] } ] |
Здесь данные сгруппированы по категориям и подкатегориям, и каждый объект содержит ключ и значения для каждой группы.