我目前正在尝试确定对象中是否设置了对象属性“ 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未定义。
答案 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;
};