javascript - 将 2 个 api 响应的结果合并为一个数组 javascript
问题描述
我有两个不同的 api 响应要组合。第一个 api 响应如下所示
"Data1":[
{
"name": "First Officer",
"status": "ACTIVE",
"id": "111"
},
{
"name": "Second Officer",
"status": "DELETED",
"id": "222"
},
{
"name": "Third Officer",
"status": "ACTIVE",
"id": "333"
}
],
Data2[],
Data3[]
第二个响应是获取该官员的最新职位,如下所示
[
{
"id": "111",
"latest_position": "Elm Street"
},
{
"id": "333",
"latest_position": "Newton Sr. Street"
}
]
我需要将上面 API 的两个响应组合成一个这样的数组
["111","First Officer","Elm Street"]
["333", "Third Officer","Newton Sr. Street"]
但我得到的是数据
["333","Third Officer","Elm Street"]
["333", "Third Officer","Newton Sr. Street"]
你知道我下面代码的错误在哪里吗
$.ajax({
url: api_url+'search?keyword='+keyword,
type: 'GET',
success: function(response) {
//console.log(response);
var keys = Object.keys(response.data);
for (var i = 0; i < keys.length; i++) {
var data = response.data[keys[i]]
for (var j = 0; j < data.length; j++) {
var name = data[j].name;
var sid = data[j].id;
$.ajax({
url: api_url+'positions?filter=%7B%22where%22%3A%7B%22user_id'+sid,
type: 'GET',
success: function(response2) {
//console.log(response);
for (var i = 0; i < response2.length; i++) {
var loc = response2[i].latest_position;
var obj = {
'id' : sid,
'name' : name,
'loc' : loc,
};
arrObj.push(obj);
}
}
})
}
}
console.log(arrObj);
谢谢
解决方案
您可以使用Array.find
搜索第二个响应中的项目id
。
像这样的东西:
const response1 = [{
"name": "First Officer",
"status": "ACTIVE",
"id": "111"
},
{
"name": "Second Officer",
"status": "DELETED",
"id": "222"
},
{
"name": "Third Officer",
"status": "ACTIVE",
"id": "333"
}
];
const response2 = [{
"id": "111",
"latest_position": "Elm Street"
},
{
"id": "333",
"latest_position": "Newton Sr. Street"
}
];
const merged = response2.map(item => {
const resp1Item = response1.find(r => r.id === item.id);
return { ...item,
...resp1Item
}
});
console.log(merged);
推荐阅读
- heroku - 验证 Heroku 配置变量的存在和正确性
- python-3.x - 如何根据功能(自动)按属性查看或隐藏字段?
- c++ - 如何防止修改数组数据?
- sql-server - 调查问题和答案的数据库模式
- jquery-ui - Datepicker 在检查代码时不起作用但没有错误?
- r - 如何修复 R 包问题 Google Cloud?
- r - 闪亮的 actionButton 删除数据表中的行(带代码)
- javascript - querySelectorAll 找不到具有自定义属性的元素
- html - 为什么 overflow-y: hidden 在我的 flex 布局中创建水平滚动条?
- php - 两个表值获取并比较并在选择框中显示比较值很好,但所有值也下拉我使用了 seletize js