You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 09:35:27