如何从打字稿中的对象数组中使用定义的键和值创建或过滤对象数组

时间:2019-11-12 07:16:51

标签: arrays typescript object

如何仅使用已定义的键和值从旧的或输入的对象数组中获取或过滤对象数组。那有点抽象。我可以举一个例子:

旧对象数组如下所示:

[{
  op:AND
  id:0
  level: 0
  predicates: [{
    op: EQ
    field: abc,
    id:1.1
    level: 1
  }, {
    op "OR"
    id:1.2
    level: 1
    predicates: [{
      op: NEQ
      id:2.1
      level: 2
      field: 12312
    },
    {
      op: AND
      id: 2.2
      level:2
      predicates: [
        {
          op: EQ
          field: abc,
          id:3.1
          level: 3
        }
      ]
    }]
  }]
}]

我想要的是:

[{
  op:AND

  predicates: [{
    op: EQ
    field: abc,

  }, {
    op "OR"

    predicates: [{
      op: NEQ

      field: 12312
    },
    {
      op: AND

      predicates: [
        {
          op: EQ
          field: abc,

        }
      ]
    }]
  }]
}]

与旧的(输入)对象数组相比,我们可以看到所有带有“ id”和“ level”的键和值都被过滤了

我为什么需要这个?

因为旧的(输入)对象是动态对象数组,所以它的结构始终与示例不同。因此编写递归方法也很困难。

所以我希望在打字稿中需要更好的解决方案

1 个答案:

答案 0 :(得分:0)

嘿,下面的陈述尚不清楚

  

它的结构始终与示例不同。所以这也是   难以编写递归方法。

您的确切用例是什么?以及您想要在这里实现什么?

如果您只想使用数据集合,则可以使用class-transformer之类的库将其转换为Modal类,然后可以根据需要迭代抛出的类集合。

 import { plainToClass } from 'class-transformer';
 const data = plainToClass(Person, parsedData as Object[]); // parsed data is json or API response and Person is your Modal class

您可以对模式类的集合执行任何一组列表,过滤和显示操作,在其中您可以根据用例忽略不需要的属性。