Javascript 向AngularJS中的数组插入键值时出现“.push不是函数”错误

Javascript 向AngularJS中的数组插入键值时出现“.push不是函数”错误,javascript,arrays,angularjs,dictionary,angularjs-scope,Javascript,Arrays,Angularjs,Dictionary,Angularjs Scope,我正在尝试使用for循环将ItemIdas作为键和PartNOvalue动态地推送到基于Noof ItemPartDtls的数组中,以便在需要时使用for循环中的ItemID再次获取这些partno 但我得到了错误信息: TypeError:NoofParts.push不是函数 推的时候 var NoofParts=[];//全局初始化 如果$scope.ItemPartDtls.length>0{ 对于let e=0;e试着这样做 var NoofParts = []; // initia

我正在尝试使用for循环将ItemIdas作为键和PartNOvalue动态地推送到基于Noof ItemPartDtls的数组中,以便在需要时使用for循环中的ItemID再次获取这些partno

但我得到了错误信息:

TypeError:NoofParts.push不是函数

推的时候

var NoofParts=[];//全局初始化 如果$scope.ItemPartDtls.length>0{ 对于let e=0;e试着这样做

 var NoofParts =  []; // initialized globally

if ($scope.ItemPartDtls.length > 0) {    
   for (let e = 0; e <= $scope.ItemPartDtls.length - 1; e++) {
       // NoofParts.push({ "ItemID": $scope.ItemsInfo    [d].ITEM_ID, "PartNO":  $scope.ItemPartDtls[e].PART_NO});
        let newArr = { 
                       ItemID: $scope.ItemsInfo[e].ITEM_ID, //here your typo error
                       PartNO: $scope.ItemPartDtls[e].PART_NO
                      }
        NoofParts.push(newArr);
    }
}

您的代码在理想情况下应该可以工作,但要进行双重验证,请尝试以下方法

(function() {

  let NoofParts = []; // initialized globally

  if ($scope.ItemPartDtls.length > 0) {
    for (let e = 0; e <= $scope.ItemPartDtls.length - 1; e++) {
      if (!Array.isArray(NoofParts)) {
        NoofParts = [];
      }
      NoofParts.push({
        ItemID: $scope.ItemsInfo[d].ITEM_ID,
        PartNO: $scope.ItemPartDtls[e].PART_NO
      }); // error here: TypeError: NoofParts.push is not a function
    }
  }

})();

你能在NoofParts.push之前先做一下console.logtypeof NoofParts吗?我怀疑你的代码中的其他地方有改动。