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

如何将两个JSON对象转为指定差异数组?当前思路是否正确?

问题分析与解决方案

你的思路是否正确?

完全不正确,问题出在这几点:

  • 用for...in遍历Object.keys(obj_old)时,x是数组的索引(0、1、2),不是对象的键(比如'team'),所以obj_old[x]根本取不到对应的值,只会得到undefined。
  • 嵌套循环完全多余,你要的是把两个对象相同键的新旧值配对,不需要交叉对比所有键的值。
  • 代码完全没往out数组里添加符合要求的对象,根本没实现目标功能。

更简洁的实现逻辑

假设两个对象的键完全一致(和你的示例一致),直接遍历键就能快速生成目标数组,有两种常用写法:

写法1:for...of 循环(直观易懂)

var obj_old = {'team':'arsenal', 'league':'premier','position': '3'}
var obj_new = {'team':'arsenal_1', 'league':'premier_1','position': '32'}

const out = []
// 遍历旧对象的所有键
for (const key of Object.keys(obj_old)) {
  out.push({
    key: key,
    old: obj_old[key],
    new: obj_new[key]
  })
}

console.log(out)

写法2:Array.map 函数式写法(更简洁)

var obj_old = {'team':'arsenal', 'league':'premier','position': '3'}
var obj_new = {'team':'arsenal_1', 'league':'premier_1','position': '32'}

const out = Object.keys(obj_old).map(key => ({
  key,
  old: obj_old[key],
  new: obj_new[key]
}))

console.log(out)

两种写法都能生成你期望的数组格式,如果要兼容极旧的JS环境,把for...of换成普通for循环遍历键数组即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:10:10