当前位置: 首页 > 知识库问答 >
问题:

如何过滤出obj[duplicate]的嵌套数组

陶星渊
2023-03-14

这是我的数据:

{
  "productGroups": [
    {
      "selectedProducts": [
        { "productPricing": { "recurringFee": {}, "oneTimeFee": {} }, "id": "610e99f9b13b4126a9e07e36" }
      ]
    },
    {
      "selectedProducts": [
        { "productPricing": { "recurringFee": {}, "oneTimeFee": {} } }
      ]
    },
    {
      "selectedProducts": [
        { "productPricing": { "recurringFee": {}, "oneTimeFee": {} } }
      ]
    }
  ]
}

我想删除数组元素,如果没有selectedProducts.id

所以结果应该是:

{
  "productGroups": [
    {
      "selectedProducts": [
        { "productPricing": { "recurringFee": {}, "oneTimeFee": {} }, "id": "610e99f9b13b4126a9e07e36" }
      ]
    }
  ]
}

这就是我所尝试的:

const filteredData = {
  productGroups: data.productGroups.map(productGroup => {
    const selectedProduct = productGroup.selectedProducts?.filter(product => product.id);
    return selectedProduct;
  }),
};

我的结果是错误的,我得到的结果是空数组:

{
  "productGroups": [
    [
      { "productPricing": { "recurringFee": {}, "oneTimeFee": {} }, "id": "610e9a5eb13b4126a9e07e37" }],
    [],
    []
  ]
}

共有2个答案

秦安宁
2023-03-14

我会这样做:

const filteredData = {
  productGroups: data.productGroups.filter(productGroup => {
     return (productGroup.selectedProducts.filter((product) => (product.id !== undefined && product.id != '') ? true: false)).length;
  }),
};
韦原
2023-03-14
let data = {
  "productGroups": [
    {
      "selectedProducts": [
        { "productPricing": { "recurringFee": {}, "oneTimeFee": {} }, "id": "610e99f9b13b4126a9e07e36" }
      ]
    },
    {
      "selectedProducts": [
        { "productPricing": { "recurringFee": {}, "oneTimeFee": {} } }
      ]
    },
    {
      "selectedProducts": [
        { "productPricing": { "recurringFee": {}, "oneTimeFee": {} } }
      ]
    }
  ]
};


const filteredData = {
  productGroups: data.productGroups.filter(productGroup => {
    const selectedProduct = productGroup.selectedProducts.filter(product => product.id);
      return selectedProduct.length;
  }),
};


console.log(JSON.stringify(filteredData))
 类似资料:
  • 问题内容: 我正在尝试过滤存储桶中的嵌套聚合。 对应: 索引数据: 我正在使用此查询和聚合定义 我从聚合结果中得到的是: 我在筛选存储桶列表时遇到了麻烦,因为它们只能提供所提供的事件ID,因此结果应类似于: 问题答案: 您快到了,只需要在聚合中添加过滤器即可,如下所示: 原因是您的查询将正确选择具有指定事件ID的嵌套事件的所有文档,但是,汇总将对所有选定文档中的所有嵌套事件进行处理。因此,您还需要

  • 如何使用java8流和过滤器过滤嵌套循环? 假设我有一个汽车列表(

  • 问题内容: 这是我的表(简体,仅重要的列): 以及一些样本数据: 我想选择键下任意位置的行。像这样的东西: 数据完全像样本中一样嵌套(仅一层)。 当前,我们正在使用PostgreSQL 9.3.5。 在PostgreSQL 9.3中可以吗?也许是9.4? 问题答案: 您的查询已关闭。 是关键功能。还是为了。进行了一些改进: 旧的sqlfiddle db <> fiddle在这里 已经返回该值作为数

  • 问题内容: 我有这样的角度嵌套对象。有没有办法为嵌套属性过滤它 我只显示父元素,但想按两个元素进行过滤,例如: 问题答案: 是的,如果我正确理解您的示例,则可以。 根据集合的大小,计算迭代所用的集合可能会更好,这样过滤器就不会随着模型的更改而不断地进行操作。 http://jsfiddle.net/suCWn/ 基本上,如果我理解正确,您会执行以下操作:

  • 问题内容: 我在ng-table中有一张发票清单,希望能够对嵌套属性进行过滤。json看起来像这样; 我的看法是这样的 我想让过滤工作于client.fullname。如何过滤嵌套属性? 更新资料 我找到了一种解决方法,将嵌套字段放入非嵌套的JSON元素中,在上面的示例中,我创建了一个JSON [‘client_name’]元素并将其分配给rails模型中的client.fullname。然后,筛

  • 问题内容: TL; DR -我该如何检查是否 之一的 和 所有的 嵌套数组满足规定的标准是什么? 我有一个。每个对象都有一个嵌套对象数组,这些对象本身都有一个嵌套对象列表。我需要对所有文档中 至少一个嵌套对象匹配的文档执行过滤器。当我说的比赛,我的意思是 所有 的嵌套对象的对象以某种方式相匹配。这是一个示例映射,以供参考; 如果文档没有/ 对象,则认为是匹配的。但是,更糟糕的是,内部对象需要考虑以