如何从数组中排除空数组?
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列