如何从数组中排除空数组?

Posted

技术标签:

【中文标题】如何从数组中排除空数组?【英文标题】: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 好的,我将尝试先检查数据,然后按照您的建议进行映射 【参考方案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)

【讨论】:

感谢两次帮助我!啊哈。 没问题,很高兴为您提供帮助:)

以上是关于如何从数组中排除空数组?的主要内容,如果未能解决你的问题,请参考以下文章

数组 - 如何从 databodyrange 中排除列(或保留公式)

如何从 Rails 中的查询中排除 id 数组(使用 ActiveRecord)?

使用jQuery从数组数组动态生成<table>时如何排除ID列

如何通过javascript从数组中的主字符串中排除字符串部分

如何从数组中删除空数组值(“”)?

如何从数组中删除空值? [复制]