2016-01-07 38 views
0

我想找出給定字符串的數組的匹配元素。找到給定字符串的數組匹配元素的最佳方法

var array = ["CODE1", "CODE2", "CODE3", "CODE4", "CODE5", "CODE6"]; 


var text = "alsdjklfjaaCODE2ladkslfj"; 
var resultCode; 
for (var i in array) { 
    if (text.indexOf(array[i]) > -1) { 
     resultCode = array[i]; 
    } 
} 
console.log(resultCode); 

但我覺得這是不是有效的方式來遍歷數組,因爲該數組是很大的。是否有任何替代算法來解決我的問題。

+6

你說的*最佳匹配元素意味着*? – thefourtheye

+0

現在我編輯了這個問題。 – kamesh

回答

1

可以使用Array.prototype.some()

some()方法測試所述陣列中的一些元件是否通過由提供的功能來實現的測試。

如果您期望字符串中只有一個匹配項。如果回調返回true,則迭代停止。

var array = ["CODE1", "CODE2", "CODE3", "CODE4", "CODE5", "CODE6"], 
 
    text = "alsdjklfjaaCODE2ladkslfj", 
 
    resultCode; 
 

 
array.some(function (a) { 
 
    if (~text.indexOf(a)) { 
 
     resultCode = a; 
 
     return true; 
 
    } 
 
}); 
 

 
document.write(resultCode);

2

由於ES6的,你可以使用Array.prototype.findArray.prototype.includes

var array = ["CODE1", "CODE2", "CODE3", "CODE4", "CODE5", "CODE6"], 
 
    text = "alsdjklfjaaCODE2ladkslfj"; 
 

 
var resultCode = array.find(a => text.includes(a)); 
 

 
document.write(resultCode);

+1

既然是ES6,'array.find(a => text.includes(a));' –

+0

@BenFortune,呃,好的! :-) 謝謝你的提示! – AmmarCSE

相關問題