大家好,我遇到了问题。我有大的形式,没有必填字段。但在我提交之前,我需要检查是否有空字段。所以我决定使用object来完成这项任务。
$scope.formData = {
foo: "",
bar: "",
some: ""
};
我试着像这样使用smth
function hasEmptyProperty (obj) {
for(var key in obj) {
if(obj.hasOwnProperty(key))
if (obj[key].length > 0)
return false;
}
return true;
}
但执行后,函数可能会返回false,然后返回true,然后返回false。
所以我的问题是。我如何检查对象中至少有一个属性值是否为空?
答案 0 :(得分:1)
对于此问题,您需要更改逻辑:
function hasEmptyProperty(obj) {
for (var key in obj) {
if (obj.hasOwnProperty(key))
if (obj[key].length === 0) // empty vs content
return true; // true vs false and short circuit
}
return false; // false vs true
}
但我建议使用Array#some()
some()
方法测试数组中的某个元素是否通过了由提供的函数实现的测试。
function hasEmptyProperty(obj) {
return Object.keys(obj).some(function (key) {
return !obj[key].length;
});
}
var $scope = {};
$scope.formData = {
foo: "",
bar: "",
some: ""
};
document.write('<pre>' + JSON.stringify(hasEmptyProperty($scope.formData), 0, 4) + '</pre>');