如果数组中存在特定字符,则Javascript函数返回true或false

时间:2018-05-19 12:39:31

标签: javascript

我有一个像这样的数组......

[ "BA456", "CA456", "GA345", "BA234" ]

我想做的是写一个函数,如果我这样称呼它......

  

myfunction('BA','CA','GA','DA');

如果传递的值存在,

应返回“True”,如果不存在则返回“False”。预期输出如下所示。

BA: T
CA: T
GA: T
DA: F

到目前为止我尝试了什么

var arr = [ "BA456", "CA456", "GA345", "BA234" ]
for(var i = 0; i < arr.length; i++)
{
    if(arr[i].indexOf('BA') != -1)
    {
        console.log(arr[i]); // returns BA456, BA234
    }
}

我正在寻找最有效的方法....我不确定使用.indexOf是否是最有效的方式?

希望有人可以提供帮助....提前致谢...

3 个答案:

答案 0 :(得分:1)

如果你使用es6,就像这样。

var arr = ["BA456", "CA456", "GA345", "BA234"];
function myfunction(...args) {
    return args.map(arg => arr.find(e => e.includes(arg)) ? 'T' : 'F');
}
myfunction('BA', 'CA', 'GA', 'DA');

答案 1 :(得分:0)

我想不出更简单的方法:

var arr = ["BA456", "CA456", "GA345", "BA234"];

// Function
function myfunction(...args) {
  var result = [];
  for (var i = 0; i < args.length; i++)
    result[i] = args[i] + ': ' + (arr[i].includes(args[i]) ? 'T' : 'F');
  return result.join('\n');
}

// Output
console.log(myfunction('BA', 'CA', 'GA', 'DA'));

希望它有所帮助。

答案 2 :(得分:-3)

You can try using regular expression like below

    var arr = [ "BA456", "CA456", "GA345", "BA234" ];
    for(var i = 0; i < arr.length; i++)
    {
        var patt = new RegExp('BA');
        if(patt.test(arr[i]))
        {            
            console.log(arr[i]); // returns BA456, BA234
        }
    }