d3.js 按汇总字段排序

2023-12-06

我有一个 JSON 数据,我想按字段分组,然后按计数排序。

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;
})));

D3 提供条件,上升 下降你可以在里面使用排序方法。不用担心,您正在使用nice的原生javascript方法稳定

var countryCount = d3.nest()
                    .key(function(d) { return d.Country; })
                    .rollup(function(a){return a.length;})
                    .entries(data)
                    .sort(function(a, b){ return d3.ascending(a.values, b.values); })

console.log(JSON.stringify(countryCount));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

d3.js 按汇总字段排序 的相关文章

随机推荐