Rya*_*lay 2 javascript arrays angularjs
我有两个数组,像这样的用户和雇员:
Users = [{id:1, name: "ryan"}, {id:2, name:"Julie"}]
Employments = [{user_id: 1, title: "manager"}, {user_id: 2, title: "Professor"}]
Run Code Online (Sandbox Code Playgroud)
我想在ng-repeat中显示Employments数组,如下所示:
<li ng-repeat="employment in Employments">
{{employment.user.name}}
</li>
Run Code Online (Sandbox Code Playgroud)
如何将Users数组映射到Employments数组?
如果您希望根据id显示员工姓名,最简单的方法就是将该ID传递给函数并返回名称,如下所示
HTML
<div ng-app='myApp' ng-controller="ArrayController">
<li ng-repeat="employment in Employments">{{getEmployeeName(employment.user_id)}}
</li>
</div>
Run Code Online (Sandbox Code Playgroud)
脚本
var app = angular.module('myApp', []);
app.controller('ArrayController', function ($scope) {
$scope.Users = [{
id: 1,
name: "ryan"
}, {
id: 2,
name: "Julie"
}];
$scope.Employments = [{
user_id: 1,
title: "manager"
}, {
user_id: 2,
title: "Professor"
}];
$scope.getEmployeeName = function (empId) {
for (var i = 0; i < $scope.Users.length; i++) {
if ($scope.Users[i].id === empId) {
return $scope.Users[i].name;
}
};
};
});
Run Code Online (Sandbox Code Playgroud)
更新2
如果要将User数组嵌入Employments数组中,请尝试以下操作
$scope.Users = [{id: 1, name: "ryan"}, {id: 2, name: "Julie"}];
$scope.Employments = [{user_id: 1, title: "manager"},
{user_id: 2, title: "Professor"}
];
Run Code Online (Sandbox Code Playgroud)
通过添加用户属性来展平Employments数组的代码
angular.forEach($scope.Users, function (user, userIndex) {
angular.forEach($scope.Employments, function (employee, employeeIndex) {
if (employee.user_id === user.id) {
employee.name = user.name;
}
});
});
Run Code Online (Sandbox Code Playgroud)
产量
$scope.Employments = [ { user_id: 1, title: "manager", name: "ryan" },
{ user_id: 2, title: "Professor", name: "Julie" }
]
Run Code Online (Sandbox Code Playgroud)
更新3
用于创建嵌套员工结构的代码,如下所示$scope.Users和$scope.Employments
$scope.employees = [];
angular.forEach($scope.Employments, function (employee, employeeIndex) {
var employeeObject = {};
employeeObject.title = employee.title;
angular.forEach($scope.Users, function (user, userIndex) {
if (employee.user_id === user.id) {
employeeObject.user = user;
}
});
$scope.employees.push(employeeObject);
});
Run Code Online (Sandbox Code Playgroud)
产量
[ { title: "manager", user: { "id": 1, "name": "ryan" } },
{ title: "Professor", user: { "id": 2, "name": "Julie" } }
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19107 次 |
| 最近记录: |