在对象javascript的数组中插入对象
我有两个对象数组:在对象javascript的数组中插入对象,javascript,lodash,Javascript,Lodash,我有两个对象数组: { "records": [ { "lead_id": 97195, "user_id": 613, "segment_id": 0, "email_address": "asdf@lkasd.asd", "full_name": "asdf asdf", }, { "lead_id": 97197, "user_id": 613, "segment_id": 0,
{
"records": [
{
"lead_id": 97195,
"user_id": 613,
"segment_id": 0,
"email_address": "asdf@lkasd.asd",
"full_name": "asdf asdf",
},
{
"lead_id": 97197,
"user_id": 613,
"segment_id": 0,
"email_address": "asdfasdfasdf@asdasdasd.com",
"full_name": "asdf asdf",
}
]
}
以及第二个对象数组:
{
"userTags": [
{
"lead_id": 97195,
"user_tag_id": 93,
"tag_name": "Julien",
},
{
"lead_id": 97195,
"user_tag_id": 93,
"tag_name": "test123"
},
{
"lead_id": 97197,
"user_tag_id": 93,
"tag_name": "General Business"
},
{
"lead_id": 97197,
"user_tag_id": 93,
"tag_name": "PAREB CLRB"
}
]
}
我想在特定的lead\u id
对象上插入标记名,例如在记录中有“lead\u id”:97195
和用户标签“lead\u id”:97195
,这是我的捕捉器或提示,应该连接到该对象数组上,但我不知道如何在记录
列表中插入tag\u name
对象
示例输出
"records": [
{
"lead_id": 97195,
"user_id": 613,
"segment_id": 0,
"email_address": "asdf@lkasd.asd",
"full_name": "asdf asdf",.
"tag_name": "Julien",
}]
您可以使用
map
和find
对记录进行迭代,并添加在userTags
对象中找到的tag\u name
字段
但是,对于同一个lead\u id
,您似乎有多个tag\u name
。
我添加了两个示例,一个采用第一个匹配的lead\u id
的tag\u name
,另一个收集所有匹配的lead\u id
的所有tag\u name
:
const记录={
“记录”:[
{“lead_id”:97195,“user_id”:613,“segment_id”:0,“email_address”:asdf@lkasd.asd,“全名”:“asdf asdf”},
{“lead_id”:97197,“user_id”:613,“segment_id”:0,“email_address”:asdfasdfasdf@asdasdasd.com,“全名”:“asdf asdf”}
]
};
const userTags={
“用户标签”:[
{“lead_id”:97195,“user_tag_id”:93,“tag_name”:“Julien”},
{“lead_id”:97195,“user_tag_id”:93,“tag_name”:“test123”},
{“lead_id”:97197,“user_tag_id”:93,“tag_name”:“General Business”},
{“lead_id”:97197,“user_tag_id”:93,“tag_name”:“PAREB CLRB”}
]
};
常数newRecords={
记录:records.records.map(记录=>{
const lead_id=record.lead_id;
const tag=userTags.userTags.find(tag=>tag.lead\u id===lead\u id);
返回{…记录,tag_name:tag.tag_name};
})
};
常量newRecordsMult={
记录:records.records.map(记录=>{
const lead_id=record.lead_id;
const tags=userTags.userTags
.filter(tag=>tag.lead\u id===lead\u id)
.map(tag=>tag.tag_name);
返回{…记录,tag_name:tags};
})
}
console.log(newRecords,newRecordsMult)代码>这是我的方式……可能很粗糙,但它很有效:)
这是唯一的预期输出?您在中有2个lead_id记录和4个lead_iduserTags@GovindParashar嗨,实际上,所有具有相同lead_id的人都将加入记录数组,我只是简短地说,对不起,如果让它更混乱Hi mate感谢您向我展示解决方案,我有一个问题要返回{…record,tag_name:tag.tag_name};如何执行?@Mike Victoria,{…record}将记录的内容传播到新对象中,称为传播操作符:
let main_array = {
"records": [
{
"lead_id": 97195,
"user_id": 613,
"segment_id": 0,
"email_address": "asdf@lkasd.asd",
"full_name": "asdf asdf",
},
{
"lead_id": 97197,
"user_id": 613,
"segment_id": 0,
"email_address": "asdfasdfasdf@asdasdasd.com",
"full_name": "asdf asdf",
}
]
}
let tag_array = {
"userTags": [
{
"lead_id": 97195,
"user_tag_id": 93,
"tag_name": "Julien",
},
{
"lead_id": 97195,
"user_tag_id": 93,
"tag_name": "test123"
},
{
"lead_id": 97197,
"user_tag_id": 93,
"tag_name": "General Business"
},
{
"lead_id": 97197,
"user_tag_id": 93,
"tag_name": "PAREB CLRB"
}
]
}
//loop main array
main_array["records"].forEach(function(item){
let lead_id = parseInt(item.lead_id);
let temp_array = [];
//loop tags
tag_array["userTags"].forEach(function(tag){
if(lead_id === parseInt(tag.lead_id)){
temp_array.push(tag.tag_name);
}
});
item.tags = temp_array;
});
console.log(main_array);