当数组只有一个值时处理条件逻辑,即使它是一个空字符串?
Handling Conditional Logic When an Array Has One Value Even If It's an Empty String?
我遇到这样一种情况,用户可以键入邮政编码值来过滤某些数据。我还设置了这个过滤器,以便保留最后的值,这样如果用户重新启用过滤器,这些值可用于在重新启用过滤器时立即再次过滤数据。
我 运行 遇到的问题是,即使过滤器已被清除,我的过滤器值也会被传递。因为这是通过 POST 请求的主体从我们的 Angular 应用程序传递给 Mongoose/MongoDB 的值数组,所以有效过滤的是 ['']
。 returns 我的结果为零 - 不足为奇。
所以我想提出一些条件检查,以防止过滤器在结果为 ['']
时触发。我不能简单地基于 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);
}
我遇到这样一种情况,用户可以键入邮政编码值来过滤某些数据。我还设置了这个过滤器,以便保留最后的值,这样如果用户重新启用过滤器,这些值可用于在重新启用过滤器时立即再次过滤数据。
我 运行 遇到的问题是,即使过滤器已被清除,我的过滤器值也会被传递。因为这是通过 POST 请求的主体从我们的 Angular 应用程序传递给 Mongoose/MongoDB 的值数组,所以有效过滤的是 ['']
。 returns 我的结果为零 - 不足为奇。
所以我想提出一些条件检查,以防止过滤器在结果为 ['']
时触发。我不能简单地基于 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);
}