javascript - javascript过滤方法不返回一个结果
问题描述
我在数组上有一个过滤器方法,其中有一个区域符号。然后我想等于我的 HTTP 请求结果。当结果为真时,它应该console.log("profile")
,当为假时,应该返回console.log("rejected")
。但无论结果如何,总会有console.log("profile")
.getProfile(id, token)
.then(data => {
let data = data.data;
let regions = ["SP", "RS", "PR", "MG", "SC"];
if (
regions.filter(reg => {
console.log(reg);
console.log(data.region === reg);
return reg === data.region; // it is false, because data.region is AC
})
) {
console.log("profile");
} else console.log("rejected");
})
所以..我想知道,为什么,什么时候reg === data.region
是假的,我有console.log("profile)
. 它应该被拒绝。任何提示错误在哪里?
解决方案
let regions = ["SP", "RS", "PR", "MG", "SC"];
let result = regions.filter(a => a === 'AC');
它给你空白数组,它不是一个falsy
值
所以这就是为什么如果条件运行......
您可以使用 some() 方法测试数组中的至少一个元素是否通过了提供的函数实现的测试。它返回一个布尔值。
let regions = ["SP", "RS", "PR", "MG", "SC"];
let result = regions.some(a => a === 'AC');
// or you can use `includes`
let result1 = regions.includes('AC');
now result contain a boolean value
你可以这样做我重构你的代码
.getProfile(id, token)
.then(data => {
let data = data.data;
let regions = ["SP", "RS", "PR", "MG", "SC"];
let result = regions.some(reg => reg === data.region); // it is false, because data.region is AC
if (result) {
console.log("profile");
} else {
}console.log("rejected");
})
推荐阅读
- functional-programming - 在 OCaml 中将列表 [1,2,3] 推进到 [3,1,2]
- c - C程序do-while循环在一次执行后退出
- swift5.1 - 如何在 Observable 类中访问环境对象 --- Swift 5
- python - 带有参数“列”但没有列的每个类别的值的熊猫数据透视表
- rdf - 维基数据“真相”数据转储
- ios - 将远程文件复制到临时 ios 文件出现错误:文件存在
- mysql - 在 MySQL 中,'+' 运算符在布尔表达式的上下文中做什么?
- mysql - MySQL on 子句中的未知列“B.in_out”
- php - 如何使用 php 在 Goutte\client 中单击输入类型按钮
- javascript - 浏览器是否总是将 Javascript 中的字符串和数字视为不可变的?