У меня есть данные JSON, и я хочу группировать поле, а затем сортировать по счету.d3.js сортировка по сводному полю
var data = [{"Name":"Ravi","Country":"India"},
{"Name":"Alex","Country":"USA"},
{"Name":"Stew","Country":"UK"},
{"Name":"Mary","Country":"India"},
{"Name":"Raju","Country":"India"},
{"Name":"Bill","Country":"UK"},
{"Name":"Elisa","Country":"UK"},
{"Name":"Sharma","Country":"India"}];
и мой d3.js запрос является следующей
var countryCount = d3.nest()
.key(function(d) { return d.Country; })
.rollup(function(a){return a.length;})
.entries(data);
console.log(JSON.stringify(countryCount));
и моего выход
[{"key":"India","values":4},{"key":"USA","values":1},{"key":"UK","values":3}]
моего желаемого выходом (сортируется по значению накопительного пакета)
[{"key":"India","values":4},{"key":"UK","values":3},{"key":"USA","values":1}]
Как я могу это сделать? Я знаю, что следующий метод сортировки по умолчанию в браузере также дает желаемый результат. Но просто хочу очистить ли d3.js любой встроенный метод для достижения этого.
console.log(JSON.stringify(countryCount.sort(function (a, b){
if (a.values > b.values) {return -1;}
else if (a.values < b.values) { return 1;}
else return 0;
})));
вы можете использовать countryCount.sort (функция (а, Ь) {d3.ascending (a.values, b.values)}) – KennyXu
Я знаю, что метод сортировки по умолчанию в браузере также дает желаемый результат. Но просто хочу выяснить, обеспечивает ли d3.js какой-либо встроенный метод для достижения этого. –
Я не думаю, что это необходимо. array.sort, если просто, кроме того, d3 предоставил две вспомогательные функции d3.ascending и d3.decending. – KennyXu