我遇到了匹配数组和字符串的问题,但是普通的正则表达式方法(边界匹配)在我的情况下似乎不起作用。
我需要使用不同的单词边界还是有人可以使用更简洁的解决方案?
var nameArray = ['AA', 'BB', 'WBB'];
var idArray = ['AA','BB','CC'];
var counter=0;
for(var j=0; j<idArray.length;j++)
{
for(var i=0; i<nameArray.length;i++)
{
if(nameArray[i].indexOf(idArray[j]) != -1)
counter++;
/*
if(nameArray[i].indexOf('/\b'+idArray[j]+'\b/') != -1)
counter++;
*/
/*
if('/\b'+nameArray[i]+'\b/'.indexOf(idArray[j]) != -1)
counter++;
*/
}
}
console.log(counter);
您可以看到检测到3个匹配项,但是我需要它仅识别整个单词匹配项(在这种情况下为2个)。
循环和结构是必需的,因为我需要在项目中处理大型数组。
JSFiddle:Link
答案 0 :(得分:0)
var nameArray = ['AA', 'BB', 'WBB'];
var idArray = ['AA','BB','CC'];
const match = (source, target) => source.filter(value => target.includes(value)).length
console.log(match(nameArray, idArray))
答案 1 :(得分:0)
只需将 indexOf更改为==
var nameArray = ['AA', 'BB', 'WBB'];
var idArray = ['AA', 'BB', 'CC'];
var counter = 0;
for (var j = 0; j < idArray.length; j++) {
for (var i = 0; i < nameArray.length; i++) {
if (nameArray[j] == idArray[i])
counter++;
}
}
console.log(counter);