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

如何在JavaScript中合并数字字符串键的JSON对象并按升序排列

合并两个数字字符串键的对象并按数字升序排列键

首先修正你示例代码里的语法错误:原始对象存在缺失逗号、字符串引号未闭合的问题,修正后才能正常运行。

完整解决方案代码

// 修正语法错误后的原始对象
let obj1 = {
  '10': "ten",
  '2': "two",
  "30": "thirty"
};

let obj2 = {
  '4': "four",
  '5': "five",
  "1": "one"
};

// 合并对象 + 按键数字升序排序构建结果
const merged = { ...obj1, ...obj2 };
const sortedKeys = Object.keys(merged).sort((a, b) => Number(a) - Number(b));
const res = Object.fromEntries(sortedKeys.map(key => [key, merged[key]]));

console.log(res);

代码解释

  1. 合并对象:使用展开运算符{...obj1, ...obj2}快速合并两个对象,如果存在重复键,obj2的键值会覆盖obj1的(若需要保留obj1的重复键,调换顺序为{...obj2, ...obj1}即可)。
  2. 排序键数组:通过Object.keys(merged)获取所有键,再用sort方法排序。这里必须把键转换成数字(Number(a)、Number(b))后比较,否则字符串排序会出现'10'排在'2'前面的错误(字符串按字符编码顺序比较)。
  3. 构建有序对象:利用ES2019新增的Object.fromEntries方法,将排序后的键值对数组直接转换为对象,语法简洁且可读性高。如果需要兼容更低版本环境,也可以用forEach遍历赋值:
const res = {};
sortedKeys.forEach(key => res[key] = merged[key]);

最终输出

{
  "1": "one",
  "2": "two",
  "4": "four",
  "5": "five",
  "10": "ten",
  "30": "thirty"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:55:37