Отобрать элементы в массиве по набору значений из другого массива Javascript

Есть основной массив и массив условие:

const objects = [
  { id: "55", naim: "Объект 1", iduser: "17" },
  { id: "56", naim: "Объект 2", iduser: "22" },
  { id: "57", naim: "Объект 3", iduser: "22" },
  { id: "58", naim: "Объект 4", iduser: "17" },
];
const spisok = ["55","57"];

Нужно получить фильтр из основного массива по условию из spisok, связывая по полю id, такого содержания:

[
  { id: "55", naim: "Объект 1", iduser: "17" },
  { id: "57", naim: "Объект 3", iduser: "22" },
]

Пытался родить что-то типа:

const result = spisok.map((u) =>
  objects.filter((a) => 
    (a.id == u)
  )
);

Но так получается один лишний уровень.

ЗЫ И еще вопрос: если массив-условие будет объект такого типа:

const spisok = {id: ["55","57"], iduser: ["17"] };

Чтобы отобрало все объекты где id (55, 57) и iduser (17). Результат будет только:

{ id: "55", naim: "Объект 1", iduser: "17" }. 

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

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

const objects = [
  { id: "55", naim: "Объект 1", iduser: "17" },
  { id: "56", naim: "Объект 2", iduser: "22" },
  { id: "57", naim: "Объект 3", iduser: "22" },
  { id: "58", naim: "Объект 4", iduser: "17" },
];
const spisok = ["55","57"];

const result = objects.filter(i => spisok.includes(i.id));
console.log(result);

const objects = [
  { id: "55", naim: "Объект 1", iduser: "17" },
  { id: "56", naim: "Объект 2", iduser: "22" },
  { id: "57", naim: "Объект 3", iduser: "22" },
  { id: "58", naim: "Объект 4", iduser: "17" },
];
const spisok = {
  id: ["55","57"], 
  iduser: ["17"] 
};

const result = objects.filter(i => {
  const entries = Object.entries(spisok);
  return entries.filter(e => e[1].includes(i[e[0]])).length == entries.length;
});
console.log(result);

→ Ссылка