我想使用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
}
}
});
});
答案 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
}
}
});
});