我遇到一种情况,用户可以键入邮政编码值以过滤某些数据。我还设置了此过滤器,以便保留最后一个值,以便用户重新启用过滤器时,这些值可用于在重新启用过滤器后立即再次过滤数据。
我遇到的问题是,即使清除了过滤器,我的过滤器值也会被传递。因为这是一个值数组,它们通过POST请求的主体从Angular应用程序传递到Mongoose / MongoDB,所以有效过滤的是['']
。这使我得到零结果-毫不奇怪。
因此,我试图提出一些条件检查以防止结果为['']
时过滤器触发。我不能简单地基于array.length排除,因为即使这个值也被认为是长度为1的数组-如果实际的邮政编码在['77799']
处,情况也会如此。这是我尝试做的事情:
if ( zipArray !== [] && zipArray !== [''] && zipArray[0] !== '') {
console.log(zipArray);
console.log(zipArray.length);
this.sendZipcode.emit(zipArray);
}
我还能在这里尝试什么以排除在
zipArray === ['']
时仍会发出具有['77799']
值的数组的值?我可以检查数组中存在的任何元素中的最少字符数吗?有什么建议吗? 最佳答案
您可以使用filter
从数组中删除所有不需要的值,然后检查是否仍有有效的邮政编码要发送到服务器:
let zipArrayWithNoEmptyZip = zipArray.filter(zip => zip.length > 0);
if (zipArrayWithNoEmptyZip.length > 0) {
console.log(zipArrayWithNoEmptyZip);
console.log(zipArrayWithNoEmptyZip.length);
this.sendZipcode.emit(zipArrayWithNoEmptyZip);
}