繁体   English   中英

在对象数组中插入对象javascript

[英]Insert object in array of object javascript

我有两个对象数组:

{
"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_id对象上插入标记名,例如在记录中有"lead_id" : 97195和 userTags "lead_id" : 97195 ,这是我的捕手或提示,应该连接到该对象数组上,但我不知道如何在records列表中插入tag_name对象

示例输出

"records": [
  {
      "lead_id": 97195,
      "user_id": 613,
      "segment_id": 0,
      "email_address": "asdf@lkasd.asd",
      "full_name": "asdf asdf",.
      "tag_name": "Julien",
  }]

为此,您可以使用mapfind遍历您的记录,并添加tag_name场,你在找到userTags对象。

但是,你似乎有多个tag_name为同一lead_id 我已经添加了两个例子,一个是采取tag_name第一个匹配的lead_id和一个收集所有tag_name所有匹配lead_id

 const records = { "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" } ] }; const userTags = { "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" } ] }; const newRecords = { records: records.records.map(record => { const lead_id = record.lead_id; const tag = userTags.userTags.find(tag => tag.lead_id === lead_id); return { ...record, tag_name: tag.tag_name }; }) }; const newRecordsMult = { records: records.records.map(record => { const lead_id = record.lead_id; const tags = userTags.userTags .filter(tag => tag.lead_id === lead_id) .map(tag => tag.tag_name); return { ...record, tag_name: tags }; }) } console.log(newRecords, newRecordsMult);

这是我的方式......也许很粗糙,但它有效:)

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM