Dev*_*Dev 1 javascript arrays json object node.js
我有一个 JSON 格式的对象数组
var employees =
[
{
"employee1": "employee1",
"Details": [
{
"title": "Software Engineer",
"EmployeeId": 451
}
]
},
{
"employee2": "employee2",
"Details": []
},
{
"employee3": "employee3",
"Details": [
{
"title": "Test analyst",
"EmployeeId": 453
}
]
},
{
"employee4": "employee4",
"Details": [
{
"title": "Software engineer",
"EmployeeId": 487
},
{
"title": "Architect",
"EmployeeId": 500
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
获取 EmployeeId 的最佳方式是什么?
预期输出:
[451,453,487,500]
Run Code Online (Sandbox Code Playgroud)
当我使用时:
console.log(Object.assign({}, ...employees).Details.map(t=>t.EmployeeId))
Run Code Online (Sandbox Code Playgroud)
它返回的结果为:
[487,500]
Run Code Online (Sandbox Code Playgroud)
有没有办法在结果中连接其他员工 ID?
首先 - 它不是 JSON,只是一个数组。其次,使用flatMapandmap像这样:
var employees = [{
"employee1": "employee1",
"Details": [{
"title": "Software Engineer",
"EmployeeId": 451
}]
},
{
"employee2": "employee2",
"Details": []
},
{
"employee3": "employee3",
"Details": [{
"title": "Test analyst",
"EmployeeId": 453
}]
},
{
"employee4": "employee4",
"Details": [{
"title": "Software engineer",
"EmployeeId": 487
},
{
"title": "Architect",
"EmployeeId": 500
}
]
}
];
var ids = employees.flatMap(({ Details }) => Details.map(({ EmployeeId }) => EmployeeId));
console.log(ids);Run Code Online (Sandbox Code Playgroud)
Polyfill 没有- 由MDN 的替代方案flatMap提供:
var employees = [{
"employee1": "employee1",
"Details": [{
"title": "Software Engineer",
"EmployeeId": 451
}]
},
{
"employee2": "employee2",
"Details": []
},
{
"employee3": "employee3",
"Details": [{
"title": "Test analyst",
"EmployeeId": 453
}]
},
{
"employee4": "employee4",
"Details": [{
"title": "Software engineer",
"EmployeeId": 487
},
{
"title": "Architect",
"EmployeeId": 500
}
]
}
];
var ids = employees.reduce((acc, { Details }) => acc.concat(Details.map(({ EmployeeId }) => EmployeeId)), []);
console.log(ids);Run Code Online (Sandbox Code Playgroud)