Ваша функция, которую вы передаете sortBy
, должна вернуть один ключ, который будет лексикографически или численно сортировать строки в том порядке, в котором вы хотите.
Невозможно вернуть два значения, как вы пытаетесь сделать там. Вместо
- если оба столбца строки объединить значения в виде строк, разделенных символом, который имеет более низкое значение ASCII, чем любой символ в
columnOne
или
- если оба столбец числовые, умножать
columnOne
рядом которая больше, чем любое значение в columnTwo
, а затем добавить два значения
Подход один, для строк:
.order(d3.descending)
.sortBy(function (d) {
return [d.columnOne,d.columnTwo].join('\x0');
});
подход два, для чисел
.order(d3.descending)
.sortBy(function (d) {
return d.columnOne * 1e9 + d.columnTwo;
});
Я заранее извиняюсь, если есть какие-либо ошибки в этом коде, так как он не тестировался.
Я не знаю, как это сделать, если один столбец является числовым, а другой - строкой.
То, что у вас есть, просто вернет 'd.columnOne' и игнорирует остальные. Вы пытаетесь использовать 'd.columnTwo' в качестве вторичного ключа сортировки? – Gordon
Да, Гордон, я хочу отсортировать несколько столбцов таблицы данных, свойства столбца - 'd.columnOne' и' d.columnTwo'. – ali