2014-02-15 185 views
0

我有一個巨大的列表(800個項目)和一個非常長的字符串。我想獲得匹配字符串部分並存儲在變量中的第一個數組。檢查字符串中的任何字是否在數組中

我當前的代碼:

for (var i = 0; i<gigantic_genre_array.length; i++) { 
    var test_genre = thelongstr.indexOf(gigantic_genre_array[i]); 
    if(test_genre != -1) { 
    tag1 = gigantic_genre_array[test_genre]; 
    alert(tag1); 
    } 
} 

像我想的那樣,任何建議,因此不能正常工作?

回答

3

試試這個:

for(var i = 0; i<gigantic_genre_array.length; i++){ 
      var test_genre = thelongstr.indexOf(gigantic_genre_array[i]); 
      if(test_genre!=-1){ 
      tag1 = gigantic_genre_array[i]; 
      alert(tag1); 
      } 
     } 
+0

是什麼?你在原來的代碼改變?我什麼也看不到。? ....哎呀,我已經看到了。你絕對用'i'取代了索引..! –

+0

他將'gigantic_genre_array [test_genre]'改成'gigantic_genre_array [i]' –

+0

'tag1 = gigantic_genre_array [i];'而不是'tag1 = gigantic_genre_array [test_genre];' – sachinjain024

0

執行過程反向這將是有效的了。

var wordArray = thelongstr.split(' '); 

for(var i=0,len = wordArray.length; i < len; i++) 
{ 
    if(gigantic_genre_array.indexOf(wordArray[i]) > -1) 
    { 
    alert(wordArray[i]); 
    } 
} 
0

您可以基於陣列上創建一個正則表達式和測試對字符串:

var gigantic_genre_array=['foo','bar','foobar']; 
var thelongstr='where is the next bar'; 

alert(new RegExp(gigantic_genre_array.join('|')).exec(thelongstr)||[null][0]); 
//returns bar 
相關問題