【发布时间】:2018-05-28 01:18:00
【问题描述】:
我有一种情况,用户可以输入邮政编码值来过滤某些数据。我还设置了这个过滤器,以便保留最后的值,这样如果用户重新启用过滤器,这些值就可以在重新启用过滤器时立即再次过滤数据。
我遇到的问题是,即使过滤器已被清除,我的过滤器值也会被传递。因为这是通过 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'] 这样的值的数组?我可以检查数组中存在的任何元素中的最少字符数吗?有什么建议吗?
【问题讨论】:
-
zipArray === ['']不会像您认为的那样做。它比较引用,zipArray永远不会等于一个新数组。 -
那么您如何建议我有条件地排除 [''] 的结果不被通过?
-
zipArray[0] !== ''工作。 -
如果你往上看,我现在就有了。似乎并不能阻止值的发出。
-
因为你的另外两个条件。他们失败了,因此整体是错误的。摆脱他们
标签: javascript arrays angular mongoose conditional