Результат верный, вы находите максимум: (10 + 20) и (30 + 70), который является последним, 100.
Стек представляет каждую точку данных с двумя значениями:
Наконец, каждая точка представлена в виде массива [y0, y1], где y0 - это
нижнее значение (базовая линия), а y1 - верхнее значение (верхняя линия);
разница между y0 и y1 соответствует вычисленному значению для
эта точка. ( документы )
Учитывая ваши входные данные, в первой категории есть точки данных для ваших типов [0,10] и [10,30] - базовая линия второй точки равна верхней линии первой точки (baseline + value). Во второй категории есть точки данных для ваших типов [0,30] и [30,70].
В вашей функции max вы добавляете d[0]
и d[1]
, что сводит каждый из двух массивов элементов выше к единой сумме:
// for each item in the array layers[layers.length-1], find the max of d[0] + d[1]
d3.max(layers[layers.length - 1], d => (d[0] + d[1]))
Это даст вам 100, так как массив layers[layers.length-1]
(представляющий части второй категории):
[
[ 0 , 30 ],
[ 30 , 70 ]
]