Javascript 为什么IndexOf返回-1?
我正在学习Javascript,不明白为什么下面的indexOf返回-1:Javascript 为什么IndexOf返回-1?,javascript,indexof,Javascript,Indexof,我正在学习Javascript,不明白为什么下面的indexOf返回-1: var string = "The quick brown fox jumps over the lazy dog"; console.log (string.indexOf("good")); -1表示未找到匹配项。“好”不在那句话里。这是 indexOf() 搜索永远不会找到它要找的东西(“good”不在句子中),并且-1是默认的返回值 -1表示“未找到匹配项” 它返回-1而不是“false”的原因是字符串开头的
var string = "The quick brown fox jumps over the lazy dog";
console.log (string.indexOf("good"));
-1表示未找到匹配项。“好”不在那句话里。这是
indexOf()
搜索永远不会找到它要找的东西(“good”不在句子中),并且-1是默认的返回值
-1表示“未找到匹配项”
它返回-1而不是“false”的原因是字符串开头的指针将位于位置0,这相当于Javascript中的false。所以返回-1可以确保您知道实际上没有匹配。因为数组是基于0的,返回0意味着从匹配的第一个字符开始;1、第二个字符,依此类推。这意味着0及以上的任何内容都将是真实的或“已找到”的响应。要保留整数类别中的所有内容,-1表示未找到匹配项。当未找到匹配项时,indexOf返回-1还有另一个原因。考虑下面的代码:
if (~str.indexOf(pattern)){
console.log('found')
}else{
console.log('not found')
}
因为~(-1)=0,所以indexOf返回-1的事实使得如果……否则使用~,写起来更容易 相关问题;即使主词存在于句子(从语义上讲)或任何部分匹配的字母序列中,indexOf()也会返回其第一个匹配字母的索引。e、 g
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”的大小写相同
以防万一,可以使用split()方法将长字符串按空格(标点符号)拆分,将其转换为子字符串数组(此处为单词)
这就是我要找的。谢谢。“它返回-1而不是“false”的原因是字符串开头的指针将位于位置0,这在Javascript中相当于false。因此返回-1确保您知道实际上没有匹配。”如果使用严格的比较,如0===false
JS返回false
(与undefined
和null
相同),因此似乎没有任何理由使用-1
,因为您可以检查所有这些更直观的值。JS arelady有两个“空”值-undefined
和null
,为什么不使用它们呢?。
console.log (string.indexOf("foxy"));
// expected output: -1
console.log (string.indexOf("good"));
// expected output: -1
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