【问题标题】:How can I exclude empties arrays from an array?如何从数组中排除空数组?
【发布时间】:2021-08-16 19:48:49
【问题描述】:

我已成功检索到包含产品的数组(按 ID 过滤),但输出中也有空数组。

这是我为示例编写的一段代码:

var category = [{
    "reference": 'BC-ENFANT',
    "name": 'Pour les Enfants',
    "description": 'Soins pour les enfants...',
    "id": 155,
    "productList": [{
        "id": 13655,
        "reference": 'PROD_ENFANT_01',
        "name": 'Brushing'
      },
      {
        "id": 13656,
        "reference": 'PROD_ENFANT_03',
        "name": 'Soins'
      },
    ]
  },

  {
    "reference": 'BC-FEMME',
    "name": 'Pour les Femmes',
    "description": 'Prestations pour les femmes',
    "id": 154,
    "productList": [{
        "id": 13657,
        "reference": 'PROD_ENFANT_01',
        "name": 'Brushing'
      },
      {
        "id": 13658,
        "reference": 'PROD_ENFANT_03',
        "name": 'Soins'
      },
    ]
  }
];

var productList = category.map(p => {
  return p.productList
});
var product = productList.map(p => p.filter(p => p.id === 13657).map(pp => {
  return {
    Reference: pp.reference,
    Name: pp.name,
    Quantity: 1
  }
}));
console.log(product)

【问题讨论】:

  • 用户过滤器使用arr.length > 0 或简单的arr.length
  • 您的目标是创建一个包含所有productList 数组中的对象的数组吗?你期待什么输出?我问是因为我相信逻辑可以简化,并且可以通过修改生成逻辑来避免空数组的问题,而无需filter()
  • 看起来您的 var product = productList.map 应该在映射 var product = productList.filer( p => check you have data).map(p ....) 之前先过滤,因为映射函数将返回所有项目的条目
  • @RoryMcCrossan 我的目标是从所有产品列表中检索产品对象
  • @developer 好的,我将尝试先检查数据,然后按照您的建议进行映射

标签: javascript jquery arrays json mapping


【解决方案1】:

我的目标是从所有产品列表中检索产品对象

在这种情况下,您可以使用 map() 创建它们的多维数组,然后使用 flat() 将其组合成一维数组,如下所示:

var category = [{"reference":'BC-ENFANT',"name":'Pour les Enfants',"description":'Soins pour les enfants...',"id":155,"productList":[{"id":13655,"reference":'PROD_ENFANT_01',"name":'Brushing'},{"id":13656,"reference":'PROD_ENFANT_03',"name":'Soins'},]},{"reference":'BC-FEMME',"name":'Pour les Femmes',"description":'Prestations pour les femmes',"id":154,"productList":[{"id":13657,"reference":'PROD_ENFANT_01',"name":'Brushing'},{"id":13658,"reference":'PROD_ENFANT_03',"name":'Soins'}]}];

var productList = category.map(p => p.productList).flat();
console.log(productList)

【讨论】:

  • 感谢两次帮助我!啊哈。
  • 没问题,很高兴为您提供帮助:)
猜你喜欢
  • 1970-01-01
  • 2019-09-05
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 2019-09-11
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
相关资源
最近更新 更多