【问题标题】:Iterating JSON file and not returning result correctly in Javascript迭代 JSON 文件并没有在 Javascript 中正确返回结果
【发布时间】:2016-04-27 08:47:19
【问题描述】:

我有一个 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 的原因是如果有错误我想通过。有些对象没有“validations”属性,所以会导致错误。

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

【问题讨论】:

  • 我认为您不了解 try、catch 和 throw 的工作原理......
  • 这是一个非常复杂的简单任务方法。你可以只做if( $scope.groups[a].sections[0].fields[b].validations &amp;&amp; $scope.groups[a].sections[0].fields[b].validations.required ) { requiredFieldsInPart++; } 并离开try/catch。
  • @lerouche 你能解释一下我做错了什么吗?
  • 首先,什么是$scope?它是一个 jQuery 对象吗?
  • 其次,您如何通过throwing 在每次迭代中避免错误?

标签: javascript json validation


【解决方案1】:

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

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

【讨论】:

    【解决方案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);
             }             
             }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-04
      • 2023-03-14
      • 2014-09-13
      • 2012-08-01
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多