Object.fromEntries的替代方案是什么?

3
我收到了一个这样的对象:
this.data = {
    O: {
        id: 0,
        name: value1,
        organization: organization1,
        ...,
       },
    1: {
        id: 1,
        name: value1,
        organization: organization1,
        ...,
        },
    2: {
        id: 2,
        name: value2,
        organization: organization2,
        ...,
        },
    ...
   } 

然后我按照id进行过滤,并移除与从存储中接收到的id匹配的Object,如下所示:

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

很不幸,构建时出现错误,提示'ObjectConstructor'类型上不存在属性'fromEntries',而且我目前无法更改tsconfig文件。在这种情况下,是否有替代方案可用于此fromEntries?任何帮助都将不胜感激!

1个回答

4
将对象创建在外部,对于每个通过测试的条目,手动分配给对象。 此外,请注意您可以通过预先构造ID的Set来减少计算复杂度:
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;
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接