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

如何按对象的值进行字母序排序?JS国家码对象排序异常问题

问题原因

  • 你的排序逻辑和预期需求不匹配:当前代码是对对象的键(ISOA2国家代码)做默认字典序排序,而你给出的预期结果是按国家英文名称的字典序排序,两者排序依据完全不同,且原始列表本身就是按国家代码排好序的,所以运行后结果没有变化。
  • 补充说明:ES6及之后的JS标准中,普通对象的字符串类型键会严格按照插入顺序保留,你用reduce重组对象的逻辑本身没有问题,只是排序规则写错了。

修复方案

把排序逻辑调整为按国家名称(对象的value)排序即可,修改后的代码如下:

function sortObject(obj) {
  return Object
    .entries(obj)
    // 按国家英文名称的字母序排序
    .sort((entryA, entryB) => entryA[1].localeCompare(entryB[1]))
    .reduce((acc, [key, value]) => {
      acc[key] = value;
      return acc;
    }, {});
}

// data为国家列表对象
const result = sortObject(data);

额外建议

如果需要兼容非常旧的运行环境,或者需要更稳定的有序键值对存储,你可以把最终返回值换成Map类型,Map会严格保证键的插入顺序,不受环境差异影响:

function sortObjectToMap(obj) {
  return Object
    .entries(obj)
    .sort((entryA, entryB) => entryA[1].localeCompare(entryB[1]))
    .reduce((map, [key, value]) => map.set(key, value), new Map());
}

内容的提问来源于stack exchange,提问作者Reacting

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:57:01