Я использую jQuery для ввода строки чисел с запятой для целей построения в D3. Я пытаюсь получить максимум этого массива, но все идет не так хорошо.Получите реальный максимум массива в D3
var x_data = $('.CostImport').text().split(',');
var y_data = $('.PriceImport').text().split(',');
var r_data = $('.SalesImport').text().split(',');
var c_data = $('.ZoneImport').text().split(',');
for (i = 0; i < x_data.length; i++) {
data.push({ "x": x_data[i], "y": y_data[i], "c": c_data[i], "r": r_data[i] });
}
alert(d3.max(r_data));
alert(d3.max(data, function (d) { return d.r }));
Оба этих предупреждения передают мне то же число, что и неверно. Фактический максимум - 928870, но я возвращаюсь на 9975. Запланировка работает нормально (разброс, с определением размера и цвета c), поэтому я немного смущен, почему я не могу вытащить максимальное число.
Любые идеи?
Так я изменил свой первоначальный код предупреждения (d3.max (данные, функции (d) {возвращение ParseInt (d.r)})); и он работал. Что странно, так это то, что когда я рисовал его раньше, у меня была шкала и использовалась d3.max (r_data) для максимального значения. Элемент с 9975 действительно установил радиус max, что означает, что предметы со 1000000+ заняли весь экран. Таким образом, d3 распознает их как числа при построении графика, но не при поиске максимума. – ScottieB
Рад это услышать. Функция 'toIntArray' должна помочь вам, если вам нужно использовать функции сортировки или сравнения на других массивах. –
Я бы предположил, что d3 имеет внутреннюю проверку, которая преобразует значения в int для построения графика, но не в макс. –