基本上,我正在开发一个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
后停止比较。
有没有解决这个问题?我想一个解决方案是将所有单个单词元素放在数组的后面,但我更喜欢一种不那么繁琐的修复方法,因为我的数组有超过12,000个值。
感谢。
答案 0 :(得分:0)
这应该很简单。按长度排序数组最长。在这种情况下,您将始终找到最长的匹配。