Javascript 将对象列表推送到angularjs中的另一个对象
我有两个单独的对象,如下所示Javascript 将对象列表推送到angularjs中的另一个对象,javascript,arrays,angularjs,object,Javascript,Arrays,Angularjs,Object,我有两个单独的对象,如下所示 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'},{
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
});
});
试试下面的方法
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;
}
}
});
angular.forEach($scope.Object2,函数(值,键){
value.directories=angular.copy($scope.Object1);
对于(var i=0;i
基本上,在将目录数组添加到对象之后,您可以在数组的开头找到所需对象的索引。删除它并将其添加回数组的开头
为什么要迭代两次?您可以只使用一个
forEach
循环和一个带分解结构的箭头函数:
angular.forEach($scope.Object2, { directories } => directories = $scope.Object1);
我有两个不同的物体,你知道的。这是一个对象数组:)你的输出将是这样的:
[{“选项”:“A/”,“目录”:[{“值”:“A/B”},{“值”:“A/B/C”},{“值”:“A/F”},{“值”:“A/”},{“选项”:“A/B”,“目录”:[{“值”:“A/B”},{“值”:“A/B/C”},{“值”:“A/F”},{“值”:“A/”},但实际输出我需要的是<“选项”{“A”},{“值”:“A/B/C”},{“值”:“A/F”},{“值”:“A/B”}]},{“选项”:“A/B”,“目录”:[{“值”:“A/B”},{“值”:“A/B/C”},{“值”:“A/F”},{“值”:“A/”}]