2016-01-07 36 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

相关问题