2013-12-11 51 views
3

我想我的數組 的事情上進行簡單的indexOf是,它只是看起來在整個文字我的數組節點內字符串的IndexOf

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

我的問題是,我得到的結果是-1 有沒有什麼辦法讓indexOf在每個數組元素中搜索而沒有另一個循環?

感謝

+0

檢查我更新的答案。 – Adil

回答

8

沒有,它不可能使用arr.indexOf搜索字符串,您必須使用循環。

儘管您可以將方法添加到數組中以調用它來查找數組中的子串。

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") 
+4

不知道爲什麼這是downvoted?它回答了這個問題。 –

+1

看起來像某人錯誤地downvoted,然後upvoted。 – bansi

0

試試這個:

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

因爲這是一個數組,所以你需要用它的索引來訪問它。

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

1

就像阿迪爾說,你需要使用一個循環。

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 

這個功能你可能有一個陣列有多個「你好」,所以你需要知道所有的人都。

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] 
+0

如果在數組中找不到搜索項,您可能希望在第一個函數(簡單的函數)中返回-1。 –

1

正如@Adil說,不,你不能使用的ArrayindexOf功能找到子串,但你可以使用的StringindexOf找到字符串:

例子:

var mystr = 'hello world'; 
var index = mystr.indexOf('hello'); 

以您的榜樣爲例,您應該嘗試以下方法:

var arr = new Array(); 
arr.push("hello world"); 
var mystr = arr[0]; // this is String object 
var index = mystr.indexOf("hello"); 

文檔:
string.indexOf
array.indexOf

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"); 
相關問題