当前位置: 首页 > 知识库问答 >
问题:

JavaScript:检查变量是否等于两个或多个值的简单方法?[副本]

曾丰茂
2023-03-14

是否有更简单的方法来确定变量是否等于一系列值,例如:

if x === 5 || 6 

而不是像这样迟钝的事情:

if x === 5 || x === 6

共有3个答案

法池暝
2023-03-14

很好。如果您有一个较长的值列表,或许可以使用以下值:

if ([5,6,7,8].indexOf(x) > -1) {
}
段干飞翮
2023-03-14

取决于您正在执行的测试类型。如果您有静态字符串,则很容易通过正则表达式进行检查:

if (/^[56ab]$/.test(item)) {
//-or-
if (/^(foo|bar|baz|fizz|buzz)$/.test(item)) {
    doStuff();
} else {
    doOtherStuff();
}

如果您有一小组值(字符串或数字),可以使用开关

switch (item) {
case 1:
case 2:
case 3:
    doStuff();
    break;
default:
    doOtherStuff();
    break;
}

如果您有一个很长的值列表,您可能应该使用带有~arr.indexOf(item)arr.contains(item)的数组:

vals = [1,3,18,3902,...];
if (~vals.indexOf(item)) {
    doStuff();
} else {
    doOtherStuff();
}

不幸的是Array.prototype.indexOf在某些浏览器中不受支持。幸运的是,一个聚填料是可用的。如果您正在经历多填充Array.prototype.index的麻烦,您不妨添加Array.prototype.contains

根据关联数据的方式,可以在对象中存储字符串的动态列表,作为其他相关信息的映射:

var map = {
    foo: bar,
    fizz: buzz
}
if (item in map) {
//-or-
if (map.hasOwnProperty(item)) {
    doStuff(map[item]);
} else {
    doOtherStuff();
}

中的将检查整个原型链,而对象。prototype.hasOwnProperty将只检查对象,因此请注意它们是不同的。

汪翰墨
2023-03-14

您可以将值隐藏在数组中,并使用[]. indexOf检查数组中是否存在变量:

if([5, 6].indexOf(x) > -1) {
  // ...
}

如果返回-1,则该变量在数组中不存在。

 类似资料:
  • 问题内容: 有没有办法检查两个(非平凡的)选择是否等效? 最初,我希望两个选择在形式上等效,但是proving-sql-query-equivalency中的答案使 我停滞不前。 对于我的实际需要,我可以只检查两个选择的(实际)结果是否相同。 问题答案: 如果要比较查询结果,请尝试以下操作: 这将导致所有行仅由查询之一返回。

  • 我试图创建一个函数,将多个变量与一个整数进行比较,并输出一个由三个字母组成的字符串。我想知道是否有办法将其翻译成Python。那么说: 它将返回以下列表: 这样的事情可能吗?

  • 在JavaScript中,检查两个数组是否具有相同/相等的值(以任何顺序)的最佳方法是什么? 这些值只是数据库实体的主键所以它们总是不同的 方法应该是什么样子的? 另外,这个问题看起来像是重复的,但我没有找到任何与Javascript相关的东西。

  • 我需要一个可以在junit 方法中调用的方法,该方法比较两个布尔值以检查它们是否相等,并返回一个布尔值。例如,类似这样的事情: 如果不相等,则返回false,如果相等,则返回true。我已经检查了布尔类,但是唯一接近的是< code>Boolean.compare(),它返回一个int值,我不能使用这个值。

  • 问题内容: if var is ‘stringone’ or ‘stringtwo’: dosomething() 这行不通!我有一个变量,当它是两个值中的一个时,我需要它执行某些操作,但它不会输入if语句。在Java中工作。如何用Python编写? 问题答案: 这不能满足您的期望: 它与: 始终为真,因为它被认为是“真”值。 有两种选择: 或者您可以编写单独的相等性测试, 不要使用,因为比较对象