迭代JSON文件,而不是在Javascript中正确返回结果

时间:2016-04-27 08:47:20

标签: javascript json validation

我有一个JSON文件并重复它。如果有一个名为“validation”的列:{“required”},那么我在下面的变量中添加一个计数:

for (var a= 0; a<66; ++a) {
        var requiredFieldsInPart = 0;

            for (var b=0; b<$scope.groups[a].sections[0].fields.length; ++b) {
             try {
                 throw console.log($scope.groups[a].sections[0].fields[b]["validations"]["required"]);
             }
             catch (e) {
                 console.log(e);
             }
             requiredFieldsInPart += 1;
         }

我使用try / catch的原因是因为如果出现错误我想通过。有些对象没有“验证”属性,因此导致错误。

假设一个部分共有21个字段,其中19个有"validations",2个没有"validations"。所以requiredFieldsInPart应该返回19.但是,它现在返回21。如何确保它只计算具有"validations" ??

的对象

2 个答案:

答案 0 :(得分:0)

我将继续过滤源数组并返回结果的大小:

return $scope.groups.filter(group =>
                             group.sections[0].fields[b].validations && 
                             group.sections[0].fields[b].validations.required
                           ).length

答案 1 :(得分:-2)

for (var a= 0; a<66; ++a) {
    var requiredFieldsInPart = 0;

        for (var b=0; b<$scope.groups[a].sections[0].fields.length; ++b) {
         try {
             console.log($scope.groups[a].sections[0].fields[b]["validations"]["required"]);
             requiredFieldsInPart += 1;//put this line inside 'try' block will do
         } catch (e) {
             console.log(e);
         }             
         }
}