【问题标题】:How to create or filter an object array with defined key and value from an object array in typescript如何从打字稿中的对象数组中创建或过滤具有已定义键和值的对象数组
【发布时间】:2019-11-12 07:16:51
【问题描述】:

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

旧的对象数组如下所示:

[{
  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”的key和value都被过滤了

我为什么需要这个?

因为旧的(输入)对象是一个动态对象数组,它并不总是与示例相同的结构。这样也很难写出递归方法。

所以我想在打字稿中需要一个更好的解决方案

【问题讨论】:

  • 请考虑编辑代码以构成 minimal reproducible example,以便有人可以将其放入他们的 IDE 并演示问题。就目前而言,我需要修正一堆拼写错误,才能让它变成我可以使用的东西。

标签: arrays typescript object


【解决方案1】:

嘿,下面的陈述不清楚问题

它并不总是与示例相同的结构。所以这也是 很难写出递归方法。

您的具体用例是什么?以及您想在这里实现什么?

如果您只是想利用您的数据集合,您可以使用类转换器之类的库将其转换为模态类,然后您可以根据您的要求迭代您的类的集合。

 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

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

【讨论】:

    猜你喜欢
    • 2021-05-21
    • 2020-08-28
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    相关资源
    最近更新 更多