从数组中检索其元素是 javascript 中的对象的元素
retrieving the elements from array whose elements are objects in javascript
我有两个数组变量,其中每个元素都是一个具有如下属性的对象:
var employees = [{
name: 'Jack',
empId: 0,
age: 25,
orgId: 1
}, {
name: 'Lucifer',
empId: 1,
age: 35,
orgId: 2
}, {
name: 'Adam',
empId: 3,
age: 46,
orgId: 1
}, {
name: 'Eve',
empId: 4,
age: 30,
orgId: 3
}];
第二个变量是
var companies= [{
name: 'Microsoft',
id: 1,
employees: [5 , 9]
}, {
name: 'Google',
id: 2,
employees: [1]
}, {
name: 'LinkedIn',
id: 3,
employees: [10]
}];
所以现在我希望当我提供公司名称(例如:Google)时,它将 return 员工详细信息。我想通过使用 filter()/reduce() 方法来做到这一点,但我做不到。需要帮助.. 谢谢
您可以使用 forEach
循环并检查名称:
var Employees = []; //initialize
companies.forEach(function(company) {
if (company.name == "Microsoft"){
Employees = company.employees;
//whatever you like
Employees.forEach(function(id){
alert(id);
});
}
});
工作 JsFiddle:https://jsfiddle.net/sapyt777/
如果员工orgId
与公司id
相同,则可以使用filter
;一个获取 id
,然后另一个获取与该 ID 关联的员工。函数 returns 一个员工数组。
function getEmployees(company) {
var id = companies.filter(function (el) {
return el.name === company;
})[0].id;
return employee.filter(function (el) {
return el.orgId === id;
});
}
getEmployees('Microsoft');
输出
[
{
"name": "Jack",
"empId": 0,
"age": 25,
"orgId": 1
},
{
"name": "Adam",
"empId": 3,
"age": 46,
"orgId": 1
}
]
正在努力提高我的技能。所以我很确定它可以工作,但我不知道这是否是实现你想要的东西的好方法!
var input = "Microsoft";
for(company in companies) {
if(companies[company].name === input) {
for(emp in employee) {
if(companies[company].id === employee[emp].orgId)
{
console.log(employee[emp]);
}
}
}
}
我有两个数组变量,其中每个元素都是一个具有如下属性的对象:
var employees = [{
name: 'Jack',
empId: 0,
age: 25,
orgId: 1
}, {
name: 'Lucifer',
empId: 1,
age: 35,
orgId: 2
}, {
name: 'Adam',
empId: 3,
age: 46,
orgId: 1
}, {
name: 'Eve',
empId: 4,
age: 30,
orgId: 3
}];
第二个变量是
var companies= [{
name: 'Microsoft',
id: 1,
employees: [5 , 9]
}, {
name: 'Google',
id: 2,
employees: [1]
}, {
name: 'LinkedIn',
id: 3,
employees: [10]
}];
所以现在我希望当我提供公司名称(例如:Google)时,它将 return 员工详细信息。我想通过使用 filter()/reduce() 方法来做到这一点,但我做不到。需要帮助.. 谢谢
您可以使用 forEach
循环并检查名称:
var Employees = []; //initialize
companies.forEach(function(company) {
if (company.name == "Microsoft"){
Employees = company.employees;
//whatever you like
Employees.forEach(function(id){
alert(id);
});
}
});
工作 JsFiddle:https://jsfiddle.net/sapyt777/
如果员工orgId
与公司id
相同,则可以使用filter
;一个获取 id
,然后另一个获取与该 ID 关联的员工。函数 returns 一个员工数组。
function getEmployees(company) {
var id = companies.filter(function (el) {
return el.name === company;
})[0].id;
return employee.filter(function (el) {
return el.orgId === id;
});
}
getEmployees('Microsoft');
输出
[
{
"name": "Jack",
"empId": 0,
"age": 25,
"orgId": 1
},
{
"name": "Adam",
"empId": 3,
"age": 46,
"orgId": 1
}
]
正在努力提高我的技能。所以我很确定它可以工作,但我不知道这是否是实现你想要的东西的好方法!
var input = "Microsoft";
for(company in companies) {
if(companies[company].name === input) {
for(emp in employee) {
if(companies[company].id === employee[emp].orgId)
{
console.log(employee[emp]);
}
}
}
}