Альтернатива Object.fromEntries? - PullRequest
0 голосов
/ 17 апреля 2020

Я получаю object вот так:

this.data = {
    O: {
        id: 0,
        name: value1,
        organization: organization1,
        ...,
       },
    1: {
        id: 1,
        name: value1,
        organization: organization1,
        ...,
        },
    2: {
        id: 2,
        name: value2,
        organization: organization2,
        ...,
        },
    ...
   } 

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

  filterOutDeleted(ids: any[], data: object,) {
    const remainingItems = Object.fromEntries(Object.entries(data)
      .filter(([, item]) => !ids.some(id => id === item.id)));

    const rows = Object.keys(remainingItems).map((item) => remainingItems[item]);
    return rows;
  }

К сожалению, я получаю сообщение об ошибке при сборке с указанием Property 'fromEntries' does not exist on type 'ObjectConstructor', и на данный момент я не могу внести изменения в файл tsconfig. Есть ли альтернатива для fromEntries для этого случая? Любая помощь высоко ценится!

1 Ответ

1 голос
/ 17 апреля 2020

Вместо этого создайте объект снаружи, и для каждой записи, которая проходит тест, присвойте его объекту вручную.

Также обратите внимание, что вы можете уменьшить вычислительную сложность, создав набор ids в аванс:

const filterOutDeleted = (ids: any[], data: object) => {
  const idsSet = new Set(ids);
  const newObj = {};
  for (const [key, val] of Object.entries(data)) {
    if (!idsSet.has(val.id)) {
      newObj[key] = val;
    }
  }
  return newObj;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...