【问题标题】:Correct usage of IndexOf in JavaScript在 JavaScript 中正确使用 IndexOf
【发布时间】:2012-05-21 09:24:22
【问题描述】:

我有一个简单的 JavaScript 语句,它读取一个字符串并根据它包含的内容触发一个 URL,但我不确定我是否正确使用了 IndexOf,所以我只是想检查一下。

这是我的代码 sn-p:

<script type="text/javascript"> 

var mc_u1 = "somevariable";

if (mc_u1.indexOf("1|Accept") > 0) {
document.writeln("<img src=\"https://www.someurl1.com\">");
}

if (mc_u1.indexOf("1|Refer") > 0) {
document.writeln("<img src=\"https://www.someurl2.com\">");

}

if (mc_u1.indexOf("2|Accept") > 0) {
document.writeln("<img src=\"https://www.someurl3.com\">");

}

if (mc_u1.indexOf("2|Refer") > 0) {
document.writeln("<img src=\"www.someurl4.com\">");

}

</script>

正如您从上面的代码中看到的,我正在尝试做的是基于变量mc_u1 的内容触发一个 URL(尽管我出于明显的原因将它们屏蔽了,但它们是不同的)。

我的问题是,如果mc_u1 变量以1|Accept 开头,我应该在Javascript 语句中使用&gt; -1 还是&gt; 0

希望这是有道理的!

【问题讨论】:

    标签: javascript indexof


    【解决方案1】:

    来自MDN

    string.indexOf(searchValue[, fromIndex])

    返回第一个调用String对象内的索引 指定值的出现,从fromIndex 开始搜索, 如果未找到该值,则返回 -1

    因此,为了检查您的变量是否以"1|Accept" 开头,您应该检查indexOf 是否返回0

    【讨论】:

    • 参考indexOf 的 ECMAScipt 标准要好得多,而不是标准语言功能的 MDN。 MDN 是一个 wiki,而不是权威,尽管它有时对示例很有用。
    【解决方案2】:

    0 是第一个字母的索引,所以如果你的子字符串出现在字符串的开头,&gt; 0 将不匹配。因此,将&gt; -1 用于字符串中的任何位置,== 0 始终用于字符串的开头。

    【讨论】:

      【解决方案3】:

      你应该使用== 0,因为一开始,索引是0

      【讨论】:

        【解决方案4】:

        mc_u1.indexOf("1|Accept") &gt; 0 如果字符串仅在某处包含子字符串,则也将为真。 如果没有找到子字符串,它将是-1

        https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf

        【讨论】:

          猜你喜欢
          • 2015-02-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多