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

JS for/in遍历对象时向数组插入多个相同对象问题排查

问题根因

你把newObject的声明放在了for循环外部,JS中对象是引用类型,你每次循环修改的都是同一个内存地址的对象属性,数组push的也只是这个对象的引用而非新对象,遍历结束后所有引用指向的都是最后一次赋值的对象,就会出现全量重复的情况。

修复方案(原生for/in写法)

把newObject的声明移到循环内部,每次循环都生成新的独立对象:

const myfunction = () => {
  var newArray = []
  var firstobj = myobject['Time Series (5min)']

  for (var key in firstobj) {
    // 每次循环新建独立对象
    var newObject = {}
    newObject.x = key.substr(11, 19)
    newObject.y = firstobj[key]['4. close']
    newArray.push(newObject)
  }
  return newArray
}
更简洁的实现方案

用Object.entries+Array.map链式调用,不需要手动维护循环和空数组,代码更精简:

const myfunction = () => {
  return Object.entries(myobject['Time Series (5min)'])
    .map(([timeKey, timeValue]) => ({
      x: timeKey.substr(11, 19),
      y: timeValue['4. close']
    }))
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:54:01