基本上,我正在开发一个chrome扩展,查看页面上的所有文本,并将其与名称数组进行比较,如果任何p
标签包含数组的值,那么我做一些事情。
这个问题真的很简单。我的数组是一个关联数组,看起来像这样:
"Blue": 'val0',
"Blue Orange": 'val1',
"Red": 'val2',
"Red White": 'val3'
我的代码是这样的:
for (var i = 0; i < arrayName.length; i++) {
if ($p.indexOf(arrayName[i].value) > -1) {
validNames[arrayName[i].value] = arrayName[i].data;
}
};
现在,一切都非常完美,除了如果$p
包含单词Blue Orange
,它不识别val1
,而是识别val0
,因为它在找到第一个Blue
后停止比较。
有办法解决这个问题吗?我想一个解决方案是把所有的单个单词元素放到数组的后面,但我更喜欢一种不那么繁琐的修复方法,因为我的数组有超过12000个值。
谢谢。
这应该足够简单了。将数组按长度排序,最长的放在第一位。在这种情况下,您将总是首先找到最长的匹配。