2016-02-15 38 views
0

你好,我面临的问题。我有很大的形式,没有必填字段。但在提交之前,我需要检查是否有空的字段。所以我决定为这个任务使用对象。如何找出表单中至少有一个字段是否为空?

$scope.formData = { 
    foo: "", 
    bar: "", 
    some: "" 
}; 

我试图用水木清华这样

function hasEmptyProperty (obj) { 
    for(var key in obj) { 
    if(obj.hasOwnProperty(key)) 
     if (obj[key].length > 0) 
     return false; 
    } 
    return true; 
} 

但执行后,函数可能返回false,那么真,那么假。

所以我的问题是。我如何检查对象中是否至少有一个属性值是空的?

回答

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 
} 

但我suggeest使用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>');

+1

无需'hasOwnProperty' - '.keys'仅返回自己的道具。 – georg

相关问题