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

无法向数组推入对象且循环中r值未递增的问题排查

问题分析与解决方案

核心问题

你犯了一个数组方法调用的语法错误:把数组的push方法当成属性赋值,而非调用方法。

错误代码行:

MergeMe.push = (temp_object);

正确写法是调用push方法并传入参数:

MergeMe.push(temp_object);

额外的两个小问题

  1. angular.forEach的回调参数用了case——这是JavaScript的保留字,建议替换为item或其他合法变量名
  2. angular.forEach语句末尾缺失闭合括号)

修正后的完整代码

var ExportExcel = function(){

    var MergeMe = [];
    console.log(MergeMe);
        
    var gap_counter = 0;
    angular.forEach($scope.Array_of_Cases, function(item) {
        gap_counter++;
        var temp_object = { s: { r: (8+gap_counter), c: 2 }, e: { r: (8+gap_counter), c: 7 } };
        MergeMe.push(temp_object);
        console.log(MergeMe);
    });

}

原因说明

当你写MergeMe.push = temp_object时,本质是把数组原型上的push方法覆盖成了一个普通对象,并没有执行添加元素的操作。每次循环都在重复覆盖这个属性,所以数组始终为空,控制台输出的其实是被覆盖的push属性值,而非数组内容。修正调用push方法后,每次循环都会将新对象添加到数组中,gap_counter递增后,r值也会随之正常变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:22:10