首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查条件是否与Javascript中数组的任何值匹配

检查条件是否与Javascript中数组的任何值匹配
EN

Stack Overflow用户
提问于 2019-03-26 10:33:13
回答 3查看 2.7K关注 0票数 0

检查一个条件是否与数组中的任何值匹配的最佳方法是什么?

因此,例如,如果接收到5xx错误,我希望实现重试逻辑。

代码语言:javascript
复制
  var searchUserRequest = httpClient.request(searchUserRequestOptions, (res => {
    if(res.statusCode ===  500 || res.statusCode ===  501 || res.statusCode ===  502) {
      process.stdout.write('HELLO!!!!!! ');

      }

  }));

理想情况下,我希望将所有5xx错误放在一个列表或数组中,然后检查res.status代码是否等于5xx错误代码中的任何一个。

在Javascript中,最好的方法是什么?我不需要循环就能这么做吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-26 10:35:15

为什么不直接检查一下statusCode是否在500到511之间(这看起来是范围)?数组是过火的。

代码语言:javascript
复制
var searchUserRequest = httpClient.request(searchUserRequestOptions, (res => {
  if(res.statusCode >= 500 && res.statusCode <= 511) {
    process.stdout.write('HELLO!!!!!! ');
  }
}));
票数 4
EN

Stack Overflow用户

发布于 2019-03-26 10:42:04

理想情况下,我希望将所有5xx错误放在一个列表或数组中,然后检查res.status代码是否等于5xx错误代码中的任何一个。

您可以将statusCode转换为字符串,并检查它是否以5开头。

代码语言:javascript
复制
var searchUserRequest = httpClient.request(searchUserRequestOptions, (res => {
  if (res.statusCode.toString().startsWith('5')) {
    process.stdout.write('HELLO!!!!!! ');

  }
}));

或者,您也可以使用aobject文字将statusCode存储为代码和相应的消息。

代码语言:javascript
复制
let statusCodes = {
  501: 'someMsg for 501',
  502: 'someMsg for 502',
  503: 'someMsg for 503',
}


var searchUserRequest = httpClient.request(searchUserRequestOptions, (res => {
  if (statusCodes[res.statusCode]) {
    process.stdout.write('HELLO!!!!!! ');

  }
}));

另一种选择是将所有状态代码保存在Map中

代码语言:javascript
复制
var statusCodesMap = new Map();
statusCodesMap.set(501, "value associated with 'a 501'");
statusCodesMap.set(502, 'value associated with 502');
statusCodesMap.set(503, 'value associated with 503');

var searchUserRequest = httpClient.request(searchUserRequestOptions, (res => {
  if (statusCodesMap.get(res.statusCode)) {
    process.stdout.write('HELLO!!!!!! ');
  }
}));

票数 1
EN

Stack Overflow用户

发布于 2019-03-26 10:40:04

如果需要与ES5兼容的代码,可以使用Array#indexOf (返回数组中元素的索引,如果数组中不存在-1 ),例如:

代码语言:javascript
复制
var searchUserRequest = httpClient.request(searchUserRequestOptions, (res => {
    if([500, 501, 502].indexOf(res.statusCode) !== -1) {
        process.stdout.write('HELLO!!!!!! ');
    }
}));

如果你可以使用ES7,你可以使用Array#includes

代码语言:javascript
复制
var searchUserRequest = httpClient.request(searchUserRequestOptions, (res => {
    if([500, 501, 502].includes(res.statusCode)) {
        process.stdout.write('HELLO!!!!!! ');
    }
}));

如果您确信不需要检查500 s中的任何值,您可以使用500<= statusCode && statusCode < 600作为CertainPerformance的建议,或者使用正则表达式:/^5\d{2}$/.test(statusCode)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55354982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档