我有两个单独的对象,如下所示
Object1 = [{value:'A/B'},{value:'A/B/C'},{value:'A/F'},{value:'A/'}];
Object2 =[{option:'A/'},{option:'A/B'}];
现在,我需要通过添加新属性来修改 Object2 ,以便Object2必须看起来像这样
Object2 = [{option:'A/',
directories:[{value:'A/'},{value:'A/B'},{value:'A/B/C'},{value:'A/F'}]},
{option:'A/B',
directories:[{value:'A/B'},{value:'A/B/C'},{value:'A/F'},{value:'A/'}]}];
我需要的改变是
在“目录”属性中,第一个值应为选项值
其他值应该是来自Object1的其余值
我尝试了以下代码
angular.forEach(Object2,function(value,key){
angular.forEach(Object1,function(value,key){
//I need the code here
});
});
答案 0 :(得分:1)
尝试以下
angular.forEach($scope.Object2,function(value,key){
value.directories = angular.copy($scope.Object1);
for (var i=0; i < value.directories.length; i++) {
if (value.directories[i].value === value.option) {
var item = value.directories.splice(i,1);
value.directories.unshift(item[0]);
break;
}
}
});
基本上,在将目录数组添加到对象之后,您可以在数组的开头找到要删除的对象的索引,然后将其删除并重新添加到数组的开头。
答案 1 :(得分:0)
为什么要迭代两次?您只能使用一个forEach
循环和一个具有解构功能的箭头函数:
angular.forEach($scope.Object2, { directories } => directories = $scope.Object1);