【发布时间】:2019-03-12 15:12:39
【问题描述】:
我遇到了匹配数组和字符串的问题,但正常的正则表达式方法(边界匹配)似乎不适用于我的情况。
我需要使用不同的单词边界还是有人有更简洁的解决方案?
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
【问题讨论】:
-
为什么不使用
nameArray[j] == idArray[i]检查数组项的全部内容? -
您使用
j代表idArray,并使用i代表nameArray,然后使用nameArray[j]和idArray[i]???? -
如果
nameArray[j] == idArray[i]可以正常工作,否则可以用更多示例更新问题 -
@KoushikChatterjee 没注意到,把它们混在了测试脚本中,现在编辑了。
标签: javascript arrays regex loops indexof