String IndexOf在数组的句子中

时间:2013-12-11 09:44:52

标签: javascript jquery html

我正在尝试在我的数组上执行一个简单的indexOf 问题是它只是在我的数组节点中查找整个文本

var arr = new Array();
arr.push("hello world");
var result = arr.indexOf("hello");

我的问题是我得到的结果是-1 有没有办法让indexOf在没有另一个循环的情况下在每个数组元素中搜索?

感谢

6 个答案:

答案 0 :(得分:8)

,无法使用arr.indexOf搜索子字符串,您必须使用循环。

虽然您可以向array添加方法来调用它来查找数组中的子字符串。

<强> Live Demo

功能定义。

arr.containsIndexOf = function(str) { 
    for(var i = 0; i < arr.length; i++){
     if(arr[i].indexOf(str) != -1)
         return i;
    }
    return -1;
}

函数调用

arr.containsIndexOf("hello")

答案 1 :(得分:1)

像Adil一样,你需要使用一个循环。

var myArr= new Array();
myArr.push("hello world");
function searchArr(txt, arr) {
    for (var i = 0; i < arr.length; i++) {
        if (arr[i].toLowerCase().indexOf(txt.toLowerCase()) > -1) {
            return i
        }
    }
}

像这样使用这个功能

searchArr("hello",myArr); //returns 0

你可能有一个多个“hello”的数组,所以你需要知道它们的位置。

myArr.push("hello world")
myArr.push("hello Pluto");
myArr.push("hi sun");
myArr.push("Hello Moon");
function searchArr(txt, arr) {
var arrList = new Array();
    for (var i = 0; i < arr.length; i++) {
        if (arr[i].toLowerCase().indexOf(txt.toLowerCase()) > -1) {
           arrList.push(i);
        }
    }
return arrList
}
searchArr("hello",myArr); //returns [0, 1, 3]

答案 2 :(得分:1)

正如@Adil所说,不,您不能使用indexOf的{​​{1}}函数来查找子字符串,但您可以使用Array的{​​{1}}来查找子字符串:

示例:

indexOf

以你的例子为例,你应该尝试一些事情:

String

<强>文档
string.indexOf
array.indexOf

答案 3 :(得分:0)

试试这个:

var arr = new Array();
arr.push("hello world");
var result = arr[0].indexOf("hello");

因为这是一个数组,所以你需要用它的索引来访问它。

答案 4 :(得分:0)

您将整个字符串hello world推送到数组的一个索引中,因此indexOf仅在您使用时才起作用,因为它需要匹配该数组索引中的整个项目。

var result = arr.indexOf("hello world");

这样做的一种方法是:

var arr = new Array();
arr.push("hello world");

for(var i = 0; i < arr.length; i++){
     if(arr[i].indexOf('hello') != -1)
         return i;
}

请参阅此jsfiddle

答案 5 :(得分:0)

// Get index of the first matching item in an array
// or -1 if the item is not found
function SearchArray(arr, txt) {
    for (var i = 0; i < arr.length; i++) {
        if (arr[i].indexOf(txt) > -1) {
            return i;
        }
    }
    return -1;
}

函数调用:

var someArray = new Array();
someArray.push("hello world");

SearchArray(someArray, "hello");