我有一个像这样的数组......
[ "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
是否是最有效的方式?
希望有人可以提供帮助....提前致谢...
答案 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
}
}