indexOf在找到匹配的第一个字符串后停止,但我希望它找到匹配的最佳字符串

时间:2015-07-15 18:43:23

标签: javascript jquery

基本上,我正在开发一个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个值。

感谢。

1 个答案:

答案 0 :(得分:0)

这应该很简单。按长度排序数组最长。在这种情况下,您将始终找到最长的匹配。