Вставить объект в массиве JavaScript объекта - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть два массива объектов:

{
"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, это мой ловец или подсказка, которая должна быть подключена к этому массиву объектов, но я понятия не имею, как я могу вставить объект tag_name в список records

пример вывода

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

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Это мой способ ... может быть грубый, но это работает :) 1001

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);
0 голосов
/ 06 февраля 2019

Вы можете сделать это, используя map и find, чтобы выполнить итерации по вашим записям и добавить поле 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);
...