如何在javascript(angularjs)的数组中查找数组是否为空

时间:2018-12-28 15:38:39

标签: javascript arrays angularjs function

我目前正在尝试确定对象中是否设置了对象属性“ itemBag”。

我遇到的问题是,我从api获取2个不同的数组,并且对象中不包含属性“ itemBag”,所以出现“未定义”错误。

我得到的2个不同的数组:

数组1:

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

数组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 :(得分:2)

您的函数中的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);
};

答案 1 :(得分:-1)

尝试在itemBag周围添加引号:

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