Javascript AngularJs-将2个关键的相似数组合并为1个ng repeat

Javascript AngularJs-将2个关键的相似数组合并为1个ng repeat,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我有以下两个对象数组 数组1:估计小时数($scope.Estimated_Hours) 数组2:实际小时数($scope.Actual_Hours) 现在我想使用ng repeat来输出类似的内容,但还没有运气 Installing: 5.50 (Act. Hours) / 56.00 (Est. Hours) Electrical: 21.00 (Act. Hours) / 45.00 (Est. Hours) Delivery: 0.00 (Act. Hours) / 4.00 (Es

我有以下两个对象数组

数组1:估计小时数(
$scope.Estimated_Hours

数组2:实际小时数(
$scope.Actual_Hours

现在我想使用
ng repeat
来输出类似的内容,但还没有运气

Installing: 5.50 (Act. Hours) / 56.00 (Est. Hours)

Electrical: 21.00 (Act. Hours) / 45.00 (Est. Hours)

Delivery: 0.00 (Act. Hours) / 4.00 (Est. Hours)

Supervision: 0.00 (Act. Hours) / 2.00 (Est. Hours)

Commissioning: 0.00 (Act. Hours) / 2.00 (Est. Hours)
如何将2个阵列整合为1个ng repeat?我通常避免使用逻辑将它们合并在一起。

这有帮助吗

var arr1=[{
“在角色上花费的总小时数”:“56.00”,
“作业\u角色”:“安装”
}, {
“在角色上花费的总小时数”:“46.00”,
“工作职责”:“电气”
}, {
“在角色上花费的总小时数”:“4.00”,
“作业角色”:“交付”
}, {
“在角色上花费的总小时数”:“2.00”,
“工作职责”:“监督”
}, {
“在角色上花费的总小时数”:“2.00”,
“工作职责”:“调试”
}
];
var arr2=[{
“工作职责”:“电气”,
“在角色上花费的总小时数”:“21.00”
}, {
“作业角色”:“安装”,
“在角色上花费的总小时数”:“5.50”
}];
var app=angular.module(“myapp”,[])
.controller(“arrCtrl”、[“$scope”,
职能($范围){
$scope.arr=arr1;
$scope.getArr2ValByKey=函数(键){
var val=arr2.过滤器(功能(i){
返回i.job\u角色==key.job\u角色;
}).map(功能(a){
控制台日志(a);
返回a.在角色上花费的总小时数;
})[0];
返回值| | 0.0;
}
}
]);

  • {{a.job_role}:(行动时数){{{getArr2ValByKey(a)}/{a.total_hours}(行动时数)
这有帮助吗

var arr1=[{
“在角色上花费的总小时数”:“56.00”,
“作业\u角色”:“安装”
}, {
“在角色上花费的总小时数”:“46.00”,
“工作职责”:“电气”
}, {
“在角色上花费的总小时数”:“4.00”,
“作业角色”:“交付”
}, {
“在角色上花费的总小时数”:“2.00”,
“工作职责”:“监督”
}, {
“在角色上花费的总小时数”:“2.00”,
“工作职责”:“调试”
}
];
var arr2=[{
“工作职责”:“电气”,
“在角色上花费的总小时数”:“21.00”
}, {
“作业角色”:“安装”,
“在角色上花费的总小时数”:“5.50”
}];
var app=angular.module(“myapp”,[])
.controller(“arrCtrl”、[“$scope”,
职能($范围){
$scope.arr=arr1;
$scope.getArr2ValByKey=函数(键){
var val=arr2.过滤器(功能(i){
返回i.job\u角色==key.job\u角色;
}).map(功能(a){
控制台日志(a);
返回a.在角色上花费的总小时数;
})[0];
返回值| | 0.0;
}
}
]);

  • {{a.job_role}:(行动时数){{{getArr2ValByKey(a)}/{a.total_hours}(行动时数)
这有帮助吗

var arr1=[{
“在角色上花费的总小时数”:“56.00”,
“作业\u角色”:“安装”
}, {
“在角色上花费的总小时数”:“46.00”,
“工作职责”:“电气”
}, {
“在角色上花费的总小时数”:“4.00”,
“作业角色”:“交付”
}, {
“在角色上花费的总小时数”:“2.00”,
“工作职责”:“监督”
}, {
“在角色上花费的总小时数”:“2.00”,
“工作职责”:“调试”
}
];
var arr2=[{
“工作职责”:“电气”,
“在角色上花费的总小时数”:“21.00”
}, {
“作业角色”:“安装”,
“在角色上花费的总小时数”:“5.50”
}];
var app=angular.module(“myapp”,[])
.controller(“arrCtrl”、[“$scope”,
职能($范围){
$scope.arr=arr1;
$scope.getArr2ValByKey=函数(键){
var val=arr2.过滤器(功能(i){
返回i.job\u角色==key.job\u角色;
}).map(功能(a){
控制台日志(a);
返回a.在角色上花费的总小时数;
})[0];
返回值| | 0.0;
}
}
]);

  • {{a.job_role}:(行动时数){{{getArr2ValByKey(a)}/{a.total_hours}(行动时数)
这有帮助吗

var arr1=[{
“在角色上花费的总小时数”:“56.00”,
“作业\u角色”:“安装”
}, {
“在角色上花费的总小时数”:“46.00”,
“工作职责”:“电气”
}, {
“在角色上花费的总小时数”:“4.00”,
“作业角色”:“交付”
}, {
“在角色上花费的总小时数”:“2.00”,
“工作职责”:“监督”
}, {
“在角色上花费的总小时数”:“2.00”,
“工作职责”:“调试”
}
];
var arr2=[{
“工作职责”:“电气”,
“在角色上花费的总小时数”:“21.00”
}, {
“作业角色”:“安装”,
“在角色上花费的总小时数”:“5.50”
}];
var app=angular.module(“myapp”,[])
.controller(“arrCtrl”、[“$scope”,
职能($范围){
$scope.arr=arr1;
$scope.getArr2ValByKey=函数(键){
var val=arr2.过滤器(功能(i){
返回i.job\u角色==key.job\u角色;
}).map(功能(a){
控制台日志(a);
返回a.在角色上花费的总小时数;
})[0];
返回值| | 0.0;
}
}
]);

  • {{a.job_role}:(行动时数){{{getArr2ValByKey(a)}/{a.total_hours}(行动时数)


如果二级数组中的元素长度相同且有直接关系,则可以使用ng repeat中的$index引用它们。我见过ng repeat进行数组连接,但没有看到任何合并它们的逻辑。正如您所想,您可以将控制器中的结构从两个数组更改为一个数组,例如
var hours{actual_hours:[];estimate_hours:[];job_role:String}
。这样,您就不会存储两次job_角色。当角色相同时,为什么不从后端逻辑将其保存在相同的json中呢。正如上面@DavidLiThose提到的,在后端(服务器端)模型中,查询2个对象的方式非常不同。但是我可以在Angular的控制器中将它们合并在一起,只是认为ng repeat可以在某些方面有所帮助:)需要这样或那样的合并,没有通过ng repea的直接选项
[
  {
    "job_role": "Electrical",
    "total_hours_spent_on_role": "21.00"
  },
  {
    "job_role": "Installing",
    "total_hours_spent_on_role": "5.50"
  }
]
Installing: 5.50 (Act. Hours) / 56.00 (Est. Hours)

Electrical: 21.00 (Act. Hours) / 45.00 (Est. Hours)

Delivery: 0.00 (Act. Hours) / 4.00 (Est. Hours)

Supervision: 0.00 (Act. Hours) / 2.00 (Est. Hours)

Commissioning: 0.00 (Act. Hours) / 2.00 (Est. Hours)