我遇到一种情况,用户可以键入邮政编码值以过滤某些数据。我还设置了此过滤器,以便保留最后一个值,以便用户重新启用过滤器时,这些值可用于在重新启用过滤器后立即再次过滤数据。

我遇到的问题是,即使清除了过滤器,我的过滤器值也会被传递。因为这是一个值数组,它们通过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);
}

10-02 11:25
查看更多