Ошибка «.push не является функцией» при вставке значения ключа в массив в AngularJS - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь отправить ItemId(as a key) и PartNO(value) в массив динамически на основе Noof ItemPartDtls с помощью цикла for, чтобы я мог снова получить эти PartNO s, используя ItemID в for цикл при необходимости.

Но я получил сообщение об ошибке:

TypeError: NoofParts.push is not a function

во время нажатия.

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 });
        NoofParts.push({ ItemID: $scope.ItemsInfo[d].ITEM_ID, PartNO: $scope.ItemPartDtls[e].PART_NO});
        // error here: TypeError: NoofParts.push is not a function
    }
}

...

function GetPartdtls(ItmId){
    for(i = 0; i < NoofParts.length; i++){
        if(NoofParts[i].ItemID == ItmId) {
            console.log("ItemID:- " + NoofParts[i].ItemID + " PartNO:- "  + NoofParts[i].PartNO);
        }
    }
}

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Попробуй вот так

 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);
    }
}
0 голосов
/ 08 июля 2019

Ваш код в идеале должен работать, но чтобы получить двойное доказательство, попробуйте следующий метод

(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
    }
  }

})();
...