在嵌套for循环中设置对象数据

时间:2016-01-16 00:13:22

标签: javascript angularjs foreach

我有一个名为jobs的范围变量,它是每个部门及其数据的对象数组。

[     “会计”:{         “foo”:“foo”,         “酒吧”:酒吧"     },     “交货”: {         “foo”:“foo”,         “酒吧”:“酒吧     } ]

HTML5日期输入要求所有日期都转换为使用javascript中的新Date(),即使它们是指定的正确yyyy-mm-dd格式。我可以手工完成并输入需要转换的每个日期,但我想使用嵌套的foreach这样做,因为我有很多日期要转换。

angular.forEach($scope.job, function(value, key){
    angular.forEach(value, function(innerValue, innerKey){
       if(typeof(innerValue) === "string"){
         var matches = innerValue.match(/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}/);
         if(matches){
               // Need to set $scope.job.key.innerKey = new Date($scope.job.key.innerKey) here 
         }
       }
     });
  });

我的问题是我不知道如何访问我来到的key和innerKey值的$ scope.job对象。如何编辑循环的当前项?在这种情况下使用“this”的文档几乎不可能找到。

2 个答案:

答案 0 :(得分:0)

您只需要对变量属性名称使用[]对象表示法

if(matches){
   value[innerKey] = new Date(value[innerKey]);
}

答案 1 :(得分:0)

另一种方法是制作一个包含日期输入的指令,并将转换逻辑放在该指令的控制器中。这样,对于自定义日期输入指令的所有实例,所有循环都将由框架隐式完成。