Как найти, если массив пуст внутри массива в JavaScript (angularjs) - PullRequest
0 голосов
/ 28 декабря 2018

В настоящее время я пытаюсь найти, установлено ли свойство объекта "itemBag" в объекте.

Проблема, с которой я сталкиваюсь, заключается в том, что я получаю 2 разных массива из API и свойства "itemBag"не включен в объект, поэтому я получаю" неопределенную "ошибку.

2 разных массива, которые я получаю:

Array 1:

[
  [
    {
      "orderNumber": 1,
      "itemBag": [
        {
          "size": 10000,
          "name": "hello.pdf",
        }
      ]
    }
  ]
]

Array 2:

[
  [
    {
      "orderNumber": 1
    }
  ]
]

Функция, которую я использую, чтобы попытаться определить, пуст или нет «itemBag»:

$ scope.reproductions - массив, упомянутый выше

$scope.checkFirstDesignContainerIsEmpty = function() {
    var containerIsEmpty;
    if($scope.reproductions[0][0].includes(itemBag)) {
      containerIsEmpty = true;
    }
    return containerIsEmpty;
};

Я получаю сообщение об ошибке, что itemBag не определен.

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Попробуйте добавить кавычки вокруг itemBag:

$scope.checkFirstDesignContainerIsEmpty = function() {
  var containerIsEmpty;
  if($scope.reproductions[0][0].includes('itemBag')) { // Added quotes here
    containerIsEmpty = true;
  }
  return containerIsEmpty;
};
0 голосов
/ 28 декабря 2018

Что такое itemBag в вашей функции?Он не объявлен перед использованием, поэтому, конечно, он не определен.$scope.reproductions[0][0] также не является массивом, это объект, поэтому попытка вызвать функции массива, такие как includes, просто не будет работать.

$scope.checkFirstDesignContainerIsEmpty = function() {
    var containerIsEmpty;
    if($scope.reproductions[0][0].includes(itemBag)) { // itemBag hasn't been declared, so is undefined
      containerIsEmpty = true;
    }
    return containerIsEmpty;
};

Чтобы проверить, не * объект $scope.reproductions[0][0] неиметь свойство itemBag, или если оно есть, и оно пустое:

$scope.checkFirstDesignContainerIsEmpty = function() {
    var containerIsEmpty = true;

    // test if itemBag key exists and value has truthy length value
    const { itemBag } = $scope.reproductions[0][0];
    if(itemBag && itemBag.length) {
      containerIsEmpty = false;
    }
    return containerIsEmpty;
};

или, более кратко:

$scope.checkFirstDesignContainerIsEmpty = function() {
    const { itemBag } = $scope.reproductions[0][0];
    return !(itemBag && itemBag.length);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...