【问题标题】:"in" statement in Javascript/jQueryJavascript/jQuery 中的“in”语句
【发布时间】:2009-07-13 13:07:14
【问题描述】:

Javascript 或 jQuery 是否有类似 Python 中的“in”语句的时间?

“dea”中的“a” -> 是的

用谷歌搜索in这个词是没有希望的:(

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    它确实有一个in operator,但仅限于对象键:

    var object = {
        a: "foo",
        b: "bar"
    };
    
    // print ab
    for (var key in object) {
        print(key);
    }
    

    你也可以用它来做这样的检查:

    if ("a" in object) {
        print("Object has a property named a");
    }
    

    对于字符串检查,虽然您需要使用indexOf() 方法:

    if ("abc".indexOf("a") > -1) {
        print("Exists");
    }
    

    【讨论】:

    • 为什么这被否决了?这是唯一真正回答问题的答案..?
    • 问题是关于在字符串中查找字符串。
    • 啊哈。我不知道 Python,所以我读到的问题是关于 javascript 中的 in 语句。现在说得通了。
    • @Matt Grande,这并不意味着我们不应该告诉他有关 in 运算符的事情。
    【解决方案2】:

    你需要使用 indexOf

    例如

    "dea".indexOf("a"); 将返回 2

    如果它不在项目中,那么它将返回 -1

    我想这就是你所追求的。

    【讨论】:

      【解决方案3】:

      听起来你需要正则表达式!

      if ("dea".match(/a/))
      { 
          return true;
      }
      

      【讨论】:

      • 那是用大锤架起画钩。使用 indexOf。
      • "dea".test(/a) 在这种情况下效率更高,因为它直接返回 true 或 false,消除了构造匹配对象然后计算它是否为 null 的开销在扔掉之前推导出真或假。
      • 另外,@DavidDorward 所说的 ;-)
      • 很高兴了解测试方法,谢谢。此外,在这种情况下 indexOf 是否明显比 RegEx 快?我发现匹配真/假比检查它是否大于 -1 更容易阅读。
      【解决方案4】:

      indexOf怎么样?

      【讨论】:

        【解决方案5】:

        使用indexOf 函数,您可以像这样扩展字符串:

        String.prototype.in = function (exp) {
            return exp.indexOf(this) >= 0;
        }
        
        if ("ab".in("abcde")) { //true
        
        }
        

        【讨论】:

        • 还有人指责我用大锤架起画钩……:P
        • 哈哈好吧,我仍然使用 indexOf,而不是 regExp ;P ...我只是让它更容易使用
        • 我宁愿做一个 String.prototype.contains(substring) 方法。无论如何,好主意。
        • 我用“in”来符合OP的原始要求
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-25
        • 2014-12-31
        • 1970-01-01
        相关资源
        最近更新 更多