我有一个对象数组,如下所示:
$scope.objectArray = [
{Title: 'object1', Description: 'lorem', Value: 57},
{Title: 'object2', Description: 'ipsum', Value: 32},
{Title: 'object3', Description: 'dolor', Value: 135}
]
如果此数组中的所有对象都在属性' value'内有值,我想检查并返回true。
我想我可以用forEach循环来做,但是有比这更好的方法吗?
var isTrue = true;
angular.forEach(objectArray, function(o){
if (!o.Value){
isTrue = false; // change variable 'isTrue' to false if no value
}
});
答案 0 :(得分:5)
您可以将Array#every
与Arrow function
var isTrue = objectArray.every(obj => obj.Value);
var objectArray = [
{Title: 'object1', Description: 'lorem', Value: 57},
{Title: 'object2', Description: 'ipsum', Value: 32},
{Title: 'object3', Description: 'dolor', Value: 135}
];
var isTrue = objectArray.every(obj => obj.Value);
document.body.innerHTML = isTrue;
<强>更新强>
要处理0
值,可以使用Object#hasOwnProperty
。
objectArray.every(obj => obj.hasOwnProperty('Value'))
var objectArray = [
{Title: 'object1', Description: 'lorem', Value: 57},
{Title: 'object2', Description: 'ipsum', Value: 32},
{Title: 'object3', Description: 'dolor', Value: 0}
];
var isTrue = objectArray.every(obj => obj.hasOwnProperty('Value'));
document.body.innerHTML = isTrue;
答案 1 :(得分:2)
您可以使用every()
method:
var isTrue = objectArray.every(function(i) {
return i.Value;
}
答案 2 :(得分:2)
如果0
不计算,只需使用Array#every()
。
var $scope = { objectArray: [{ Title: 'object1', Description: 'lorem', Value: 57 }, { Title: 'object2', Description: 'ipsum', Value: 32 }, { Title: 'object3', Description: 'dolor', Value: 135 }] },
isTrue = $scope.objectArray.every(function (a) {
return a.Value;
});
document.write(isTrue);
将0
作为值进行测试的解决方案。
var $scope = { objectArray: [{ Title: 'object1', Description: 'lorem', Value: 0 }, { Title: 'object2', Description: 'ipsum', Value: 32 }, { Title: 'object3', Description: 'dolor', Value: 135 }] },
isTrue = $scope.objectArray.every(function (a) {
return a.Value || a.Value === 0;
});
document.write(isTrue);