找到给定字符串的数组匹配元素的最佳方法

时间:2016-01-07 11:54:46

标签: javascript node.js

我正在尝试找出给定字符串的数组的匹配元素。

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);

但是我觉得迭代数组不是一种有效的方法,因为这个数组有点大。我的问题是否有替代算法。

2 个答案:

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