处理条件逻辑,当一个数组有一个值,即使它是一个空字符串?

时间:2017-12-14 02:43:09

标签: javascript arrays angular mongoose conditional

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

我遇到的问题是即使过滤器被清除,我的过滤器值也会被传递。因为这是一个从我们的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']的数组吗?我可以检查阵列中存在的任何元素的最小字符数吗?建议?

1 个答案:

答案 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);
}