我正在尝试找出给定字符串的数组的匹配元素。
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);
但是我觉得迭代数组不是一种有效的方法,因为这个数组有点大。我的问题是否有替代算法。
答案 0 :(得分:2)
从ES6开始,您可以使用Array.prototype.find和Array.prototype.includes
var array = ["CODE1", "CODE2", "CODE3", "CODE4", "CODE5", "CODE6"],
text = "alsdjklfjaaCODE2ladkslfj";
var resultCode = array.find(a => text.includes(a));
document.write(resultCode);

答案 1 :(得分:1)
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);