无法向数组推入对象且循环中r值未递增的问题排查
问题分析与解决方案
核心问题
你犯了一个数组方法调用的语法错误:把数组的push方法当成属性赋值,而非调用方法。
错误代码行:
MergeMe.push = (temp_object);
正确写法是调用push方法并传入参数:
MergeMe.push(temp_object);
额外的两个小问题
angular.forEach的回调参数用了case——这是JavaScript的保留字,建议替换为item或其他合法变量名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
相关产品推荐
相关产品推荐

