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

JS for循环生成对象数组出现[circular object Object]错误如何解决

错误原因
  • 核心问题是line对象声明在for循环外部:JavaScript中对象属于引用类型,你每次循环修改的都是同一个内存地址的对象属性,往数组push的也只是同一个对象的引用,最终数组里所有元素都会被最后一次循环的赋值覆盖。
  • 你提供的测试数据中oddsb[1]的值为6,所以按现有数据跑出的第二个元素odds是4/6,如果你要得到预期的4/1,把对应字段值改成1即可。
修复方案

把line对象的声明挪到for循环内部,每次循环创建独立的新对象即可,同时可额外将position转为数字类型,匹配你预期的输出格式,修复后完整代码如下:

<script>
    var res = '{"count":"2","bettype":"double","position[0]":"1","oddsa[0]":"2","oddsb[0]":"3","placeodds[0]":"1/5","position[1]":"1","oddsa[1]":"4","oddsb[1]":"1","placeodds[1]":"1/7"}';

    var getvals = JSON.parse(res);
    var count = parseInt(getvals["count"]);

    const array = [];
    for(var i = 0;i < count;i++)
    {
        // 每次循环创建新的独立对象,避免引用覆盖
        var line = {};
        line["odds"] = getvals["oddsa["+i+"]"]+'/'+getvals["oddsb["+i+"]"];
        line["terms"] = getvals["placeodds["+i+"]"];
        line["position"] = parseInt(getvals["position["+i+"]"]);
        array.push(line);
    }
    console.log(array);
</script>
输出结果

运行上述代码后控制台输出即为你预期的结构:

[
  { odds: '2/3', position: 1, terms: '1/5' },
  { odds: '4/1', position: 1, terms: '1/7' }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:15:05