当前位置: 首页 > 面试题库 >

JavaScript根据值列表检查变量相等性

那开济
2023-03-14
问题内容

我正在检查一个变量,例如foo,是否等于多个值。例如,

if( foo == 1 || foo == 3 || foo == 12 ) {
    // ...
}

关键是,对于这样一个琐碎的任务,这是很多代码。我想出了以下几点:

if( foo in {1: 1, 3: 1, 12: 1} ) {
    // ...
}

但这也不完全吸引我,因为我必须给对象中的项目赋予冗余值。

有谁知道对多个值进行相等性检查的体面方法?


问题答案:

使用提供的答案,我得出以下结论:

Object.prototype.in = function() {
    for(var i=0; i<arguments.length; i++)
       if(arguments[i] == this) return true;
    return false;
}

可以这样称呼:

if(foo.in(1, 3, 12)) {
    // ...
}

编辑: 最近我碰到了这个“技巧”,如果值是字符串并且不包含特殊字符,则很有用。对于特殊字符,由于转义而变得丑陋,并且因此也更容易出错。

/foo|bar|something/.test(str);

更精确地说,这将检查确切的字符串,但是对于简单的相等性测试而言,它再次变得更加复杂:

/^(foo|bar|something)$/.test(str);


 类似资料:
  • 我正在寻找以下问题的矢量化解决方案。有些客户可以同时拥有两种不同产品x或y中的一种。我想识别同一客户的产品x后面跟有产品y的所有行。在这种情况下,产品x的< code>to_date将与产品y的< code>from_date相同。下面是一个示例: 所需的输出如下所示: 到目前为止,我的方法是使用 dplyr 按对 data.frame 进行分组。但是我不知道如何在中检查中相等的值。

  • 问题内容: 我有一个带有字符串值的变量。我想创建一个以值作为其名称/标识符的列表,然后将值附加到列表中。因此,假设变量,我想创建一个名为的列表。显然,就我而言,我不知道的价值。 问题答案: 别。创建动态变量很少是一个好主意,并且,如果您尝试创建本地名称(在函数内部),则很困难,并且会极大地影响性能。 请改用字典: 命名空间只是用于在其中查找名称的代码的默认词典。创建更多此类词典更加容易和整洁。 您

  • 我们使用liquibase指定数据库布局及其更改。在开发中,我们使用集成在Java应用程序中的liquibase来执行必要的更新。 因为我们的应用程序没有权利在生产中更改模式,所以liquibase不在生产中运行。相反,我们使用liquibase生成SQL脚本。然后在部署应用程序之前手动执行这些脚本。 我们希望确保数据库布局与对应于应用程序的变更日志匹配。SQL脚本创建表并插入类似liquibas

  • 问题内容: 是否有任何的java utils的,允许检查对象平等,不受 平等 覆盖?由于某些原因,我不想为类提供equals方法。我在单元测试中需要类似 SomeUtils.equals(a,b)之 类的东西 , 它比较所有对象字段(我想是通过反射)。 问题答案: 您可以在Apache Commons EqualsBuilder中使用

  • 问题内容: 我有一个值列表,需要根据给定的布尔值列表中的值进行过滤: 我使用以下行生成一个新的过滤列表: 结果是: 这条线工作正常,但是(对我而言)看起来有点过大了,我想知道是否有更简单的方法来实现这一目标。 忠告 以下答案提供了两个好的建议: 1-不要像我一样命名列表,因为它是内置函数。 2-不要比较像我做的事情,因为这是不必要的。只需使用就足够了。 问题答案: 您正在寻找: 时序比较(py3.

  • 我有一个String类型的数组列表和一个Person类型的数组列表。其中,Person是一个仅包含包含名称的字符串的对象。 假设我这样做, 假设创建一个新的Person对象会将名称设置为“Josh”,并假设Person类具有该名称的get方法。 有没有办法检查名称数组列表中是否包含名为Josh的人。 我唯一能想到的就是这个, 现在,如果Person数组列表和names数组列表包含多个元素,如何检查