使用JavaScript/D3.js对末尾带数字的键值对数组排序异常问题求助
使用JavaScript/D3.js对末尾带数字的键值对数组排序异常问题求助
我本来以为自己把这个问题搞明白了,结果还是栽了跟头😅。现在遇到一个特别奇怪的排序问题:我需要对末尾带数字的键字符串进行排序,想要按**从最新(数字最大,最晚添加的条目)到最旧(数字最小,最早添加的条目)**的顺序展示数据,但实际排序后,所有单数字的键会被归为一组排在前面,多数字的键反而都在单数字组的下面。更糟的是,每当新增一个位置(不管是全新的位置,还是给已有位置新增条目),数组返回的顺序就变得乱七八糟,完全不遵守我想要的从新到旧的排序规则。我试了好几种排序方法,结果都是一样的问题。
下面是我用来统计各位置被添加次数的代码,以及从SharePoint列表获取到的原始数据:
控制台输出的原始数据数组
[ { key: "Location-9", values: 1 }, { key: "Location-8", values: 5 }, { key: "Location-7", values: 5 }, { key: "Location-6", values: 5 }, { key: "Location-5", values: 14 }, { key: "Location-4", values: 10 }, { key: "Location-3", values: 8 }, { key: "Location-2", values: 6 }, { key: "Location-16", values: 5 }, { key: "Location-15", values: 2 }, { key: "Location-14", values: 2 }, { key: "Location-13", values: 2 }, { key: "Location-12", values: 2 }, { key: "Location-11", values: 2 }, { key: "Location-10", values: 2 }, { key: "Location-1", values: 15 } ]
我当前使用的统计及排序代码
data = chartData; data.sort(function (a, b) { return b.key < a.key ? -1 : 1;}) var LocationCount = d3.nest() .key(function(d) { return d.value; }) .rollup(function(v) { return v.length; }) .entries(data);
现在我完全搞不懂为什么排序会出现这种问题,有没有大佬能帮我看看怎么解决这个排序异常的问题,让数组能按照键末尾的数字从大到小正确排序?
备注:内容来源于stack exchange,提问作者TonyT
相关产品推荐
相关产品推荐

