为什么IndexOf返回-1?

时间:2011-12-21 06:31:55

标签: javascript indexof

我正在学习Javascript,并且不明白为什么indexOf会返回-1:

var string = "The quick brown fox jumps over the lazy dog";

console.log (string.indexOf("good"));

6 个答案:

答案 0 :(得分:27)

-1表示“找不到匹配项”。

它返回-1而不是“false”的原因是字符串开头的一个针位于位置0,这相当于Javascript中的false。因此,返回-1可确保您知道实际上没有匹配。

答案 1 :(得分:8)

-1表示未找到匹配项。 “好”不在那句话中。这是documented behaviour

  

indexOf()方法返回可在数组中找到给定元素的第一个索引,如果不存在,则返回-1

答案 2 :(得分:8)

因为数组是基于0的,所以返回0意味着从匹配的第一个字符开始; 1,第二个字符,依此类推。这意味着任何0和更高的内容都是真实的或“找到的”响应。要将所有内容保留在整数类别中,-1表示未找到匹配项。

答案 3 :(得分:2)

当找不到匹配项时,indexOf还有另一个原因返回-1。请考虑以下代码:

<div>
    <asp:GridView 
        ID="GridView1" 
        runat="server" 
        AutoGenerateColumns="False"
        DataKeyNames="Id" 
        DataSourceID="SqlDataSourceH"
        CssClass="myGridView"
        RowStyle-CssClass="rows"
        ShowHeader="false">

        <Columns>
             <asp:ImageField
                DataImageUrlField = "Id" 
                DataImageUrlFormatString = "Hardware.aspx?Id={0}"
                ControlStyle-Width = "100" 
                ControlStyle-Height = "100"></asp:ImageField>
            <asp:BoundField DataField="descr"></asp:BoundField>
        </Columns>
    </asp:GridView>

    <asp:SqlDataSource 
        runat="server" 
        ID="SqlDataSourceH" 
        ConnectionString='<%$ ConnectionStrings:ConnectionString %>' 
        SelectCommand="SELECT [Id], [img], [descr] FROM [Hardware]">
    </asp:SqlDataSource>
</div>

因为〜( - 1)= 0所以indexOf返回-1的事实使得更容易编写if ... else使用〜。

答案 4 :(得分:0)

搜索从未找到它正在寻找的内容(“好”不在句子中),-1是默认的返回值。

http://www.w3schools.com/jsref/jsref_indexof.asp

答案 5 :(得分:0)

相关问题;即使主题词(从语义上来说)或部分匹配的任何字母序列中存在主题词,indexOf()也会返回其第一个匹配字母的索引。例如

const string = "The quick brown fox jumps over the lazy dog";
console.log(string.length);
// expected output: 43

console.log (string.indexOf("fox"));
// expected output: 16

console.log (string.indexOf(" q"));
// expected output: 3

但是,如果部分字母序列与字符串数组的任何部分都不匹配,则该方法将返回-1,与“ good”相同;

console.log (string.indexOf("foxy"));
// expected output: -1

console.log (string.indexOf("good"));
// expected output: -1

以防万一,可以使用split()方法将其转换为子字符串数组(此处为单词),并用空格(标点符号)将长字符串分开;

const words = string.split(' ');
console.log(words);
// expected output: ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog"]

console.log(words.indexOf("fox"));
// expected output: 3