在另一个对象中创建一个Javascript对象

时间:2016-02-03 12:40:13

标签: javascript angularjs

我想使用angular.forEach()函数创建一个对象,然后我需要推送另一个对象并将所有值初始化为false,但下面的方法指出了错误。

怎么能正确地做到这一点?如果我使用“item.id”和“index.id”,它将不会创建预期的功能。我附上照片以指出预期的功能。link for image

        angular.forEach(metaData.validationRules, function (item, key) {
            //want to push object to another object
            angular.forEach(insarray.instances, function (index, key) {
               $scope.select = {
                    item.id: {
                        index.id:false
                    }
                }
            });
        });

2 个答案:

答案 0 :(得分:1)

问题在于,无法像在示例中那样设置键值对的键。更好的方法是:

$scope.select = {};
angular.forEach(metaData.validationRules, function (item, key) {
    $scope.select[item.id] = $scope.select[item.id] || {};

    angular.forEach(insarray.instances, function (index, key) {
        $scope.select[item.id][index.id] = false;
    });
});

考虑在循环之外声明新的选择对象。这很重要,否则你会在每个循环中覆盖对象。

答案 1 :(得分:1)

目前无法使用,但使用ES6,您也可以使用此语法。

angular.forEach(metaData.validationRules, function (item, key) {
  //want to push object to another object
  angular.forEach(insarray.instances, function (index, key) {
    $scope.select={
      [item.id]: {
        [index.id]:false
      }
    }
  });
});

More example here