Создать объект с ключами из одного массива, а значениями из другого

Есть массив юзеров с их id и именами.

const users = [
  {
      "id": "U043WGQLVEF",
      "profile": {
          "real_name": "Evangelos Milly",
      },
  },
  {
      "id": "U043WMCQ9K4",
      "profile": {
          "real_name": "Ignace Mantvydas",
      },
  },
  {
      "id": "U043Z6Y11GD",
      "profile": {
          "real_name": "Daniyal Dionysos",
      },
  },
  {
      "id": "U044EM1N6ES",
      "profile": {
          "real_name": "Goran Ainslie",
      },
  }
]

Отдельно есть массив id.

const id = ['U043WGQLVEF', 'U043Z6Y11GD', 'U044EM1N6ES'];

Как мне создать объект, где ключом будут id, а значениями соответствующие имена? По типу:

const obj = {
  'U043WGQLVEF': "Evangelos Milly",
  'U043Z6Y11GD': "Daniyal Dionysos",
  'U044EM1N6ES': "Goran Ainslie"
}

Ответы (3 шт):

Автор решения: SwaD

Вот так можно сократить и оптимизировать ваш код.
Метод forEach всегда обходит весь массив целиком и его нельзя прервать, поэтому в вашем варианте вы обходили весь массив users столько раз, сколько элементов в массиве id.

const users = [
  {
  "id": "U043WGQLVEF",
  "profile": {
      "real_name": "Evangelos Milly",
  },
  },
  {
  "id": "U043WMCQ9K4",
  "profile": {
      "real_name": "Ignace Mantvydas",
  },
  },
  {
  "id": "U043Z6Y11GD",
  "profile": {
      "real_name": "Daniyal Dionysos",
  },
  },
  {
  "id": "U044EM1N6ES",
  "profile": {
      "real_name": "Goran Ainslie",
  },
  }
];

const id = ['U043WGQLVEF', 'U043Z6Y11GD', 'U044EM1N6ES'];

const obj = {}; 
id.forEach((el) => { 
  const find = users.find((item) => item.id === el);
  obj[el] = find.profile.real_name; 
}); 

console.log(obj)

→ Ссылка
Автор решения: Nikita Galadiy

Так же можно использовать метод reduce

const result = id.reduce((object, cid) => {
    const user = users.find((user) => (user.id === cid));
    return {
        ...object,
        [user.id]: user.profile.real_name
    };
}, {});

console.log(result);
→ Ссылка
Автор решения: Rudi

Можно что-то такое сделать..

const users = [{
    "id": "U043WGQLVEF",
    "profile": {
      "real_name": "Evangelos Milly",
    },
  },
  {
    "id": "U043WMCQ9K4",
    "profile": {
      "real_name": "Ignace Mantvydas",
    },
  },
  {
    "id": "U043Z6Y11GD",
    "profile": {
      "real_name": "Daniyal Dionysos",
    },
  },
  {
    "id": "U044EM1N6ES",
    "profile": {
      "real_name": "Goran Ainslie",
    },
  }
];

const id = ['U043WGQLVEF', 'U043Z6Y11GD', 'U044EM1N6ES'];
const obj = {};

for (const user of users) if(id.includes(user.id)) obj[user.id] = user.profile.real_name;

console.log(obj)

→ Ссылка