Это потому, что indexOf
работает с array
и strings
.
скажем, синтаксис indexOf равен
operatedItem.indexOf(searchedItem);
Здесь, в вашем случае
{
name:'bb',
searchWords:['bb','bc','de']
}
name это строка ,
и searchWords это массив .
При выполнении:
name.indexOf ("b");// 0
name.indexOf ("bb");// 0
name.indexOf ("a");// - 1
Он проверит, существует ли searchedItem
где-нибудь в operatedItem
.
let str = "aa ab a bb";
console.log(str.indexOf("a")); //0
console.log(str.indexOf("aa")); //0
console.log(str.indexOf("ab")); //3
console.log(str.indexOf("b")); //4
console.log(str.indexOf("c")); //-1
console.log(str.indexOf("aaa")); //-1
И когда indexOf используется с массивом ,
, он проверяет, существует ли searchedItem
в массиве operatedItem
, это не пойдет для поиска подстроки.
let arr = ["aa", "ab", "a", "bb"];
console.log(arr.indexOf("a")); //2
console.log(arr.indexOf("aa")); //0
console.log(arr.indexOf("ab")); //1
console.log(arr.indexOf("b")); //-1
console.log(arr.indexOf("c")); //-1
console.log(arr.indexOf("aaa")); //-1