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