使用indexOf匹配精确的数组元素(正则表达式 - 边界匹配数组)

问题描述 投票:0回答:2

我遇到了匹配数组和字符串的问题,但正常的正则表达式方法(边界匹配)在我的情况下似乎不起作用。

我是否需要使用不同的字边界或者是否有人有更清洁的解决方案?

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

javascript arrays regex loops indexof
2个回答
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);

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))
© www.soinside.com 2019 - 2024. All rights reserved.