javascript - indexOf如何返回此示例的位置,结果不应该为-1?

原文 标签 javascript arrays prototype indexof

我知道indexOf在字符串/数组中搜索值的位置,然后返回该位置,但是我认为即使存在空格也必须完全匹配。但是我正在读这篇文章,我很困惑为什么即使比赛只是部分比赛也能返回真。

通常,这就是indexOf将如何返回并按预期方式

var array = ["AA", "BB", "A", "CC", "D", "This is the time to be back home.", "It's christmas"];
// Let's say result >= 0 will return true else false
console.log(array.indexOf("AA") + " AA");   // 0 --true
console.log(array.indexOf("A") + " A");     // 2 --true
console.log(array.indexOf("C") + " C");     // -1 --false
console.log(array.indexOf("DD") + " DD");   // -1 --false
console.log(array.indexOf("the time") + " the time");   // -1 --false
console.log(array.indexOf("It's christmas") + " christmas");    // 6 --true


这就是我在一本书中看到的,并且不理解为什么它返回true意味着在数组中找到它。

String.prototype.cliche = function(){
    var cliche = ["lock and load", "touch base", "open the kimono"];

    for (var i = 0; i < cliche.length; i++){
        var index = this.indexOf(cliche[i]);
        if(index >= 0){
            return true;
        }
    }
    return false;
}

var sentences = ["I'll send my car around to pick you up.",
                "Let's touch base in the morning and see where we are",
                "We don't want to open the kimono, we just want to inform them."];

for(var i = 0; i < sentences.length; i++){
    var phrase = sentences[i];
    if(phrase.cliche()){
        console.log("CLICHE ALERT: " + phrase);
    }
}


函数中的cliche数组仅包含短语的一部分,例如touch base,依此类推

但是在句子数组中,该值类似于Let's touch base in the morning and see where we are,即使该词组中只有一部分与陈词滥调值匹配,该值实际上也会返回true。

这是如何运作的?

最佳答案

那是因为它们是不同的方法:


Array.prototype.indexOf返回在数组中找到某个值(使用严格相等算法)的第一个位置。
String.prototype.indexOf返回字符串中包含某个字符串(子字符串)的第一个位置。


例:

["AA"].indexOf("A"); // -1 (not found)
"AA".indexOf("A");   // 0

相关文章:

javascript - 使用mx + b在Highcharts中绘制回归线

ruby-on-rails - Ruby Enumerable Collect Array仍显示在列表末尾

javascript - 为什么Function .__ proto__返回与其他原型(prototype)不同的内容?

javascript - JS-无法返回数据库返回的对象(使用Firebase Firestore)

javascript - mouseover事件冒泡问题-Javascript

javascript - 如何在JavaScript中将零填充到我的多维数组?

java - Java:像PHP的join()这样的数组函数?

java - Java:数组中的索引存在,ArrayIndexOutOfBoundsException:0

javascript - jQuery如何如此快速地克隆其方法?

javascript - 用例Object.create(null)?