【发布时间】:2019-01-04 17:34:31
【问题描述】:
我遇到了一个我想解决的问题,但我还没有完全解决这个问题。如果有人可以在这里为我指明正确的方向,我将不胜感激。
基本上,我是在比较 javascript 中的两个有序数组。我有一个索引数组和一个要匹配的数组。如果数组中的所有元素都按顺序匹配,我想返回一个匹配项。但是,我也想返回最接近的部分匹配。比如
如果我的索引数组是
var index = ['A', 'B', 'C', 'D']
我要比较的数组是
var compare = ['A', 'B', 'C', 'D']
显然应该匹配。但这些也都应该匹配:
var compare = ['A']
var compare = ['A', 'B']
var compare = ['A', 'B', 'C']
这些不应该匹配:
var compare = ['B']; //doesn't start with 'A'
var compare = ['B', 'C']; //doesn't start with 'A'
var compare = ['B', 'A']; //not in correct order
数组将始终保持相同的顺序,并且顺序必须匹配才能评估为真。
基本上,我试图返回最精确的匹配,但如果该匹配不存在,则提供最接近的后备。有人知道我在说什么吗?任何人可以提供的帮助将不胜感激
【问题讨论】:
-
您可以过滤匹配并按大小对结果进行排序(最大的优先),排序后的数组中的第一个值将是最佳匹配。
-
你遗漏了一些边缘案例 ABCE... 是否匹配 ABCD?
-
@NunoSousa,是的,我想这也会匹配。
-
ABEC怎么样?应该匹配吗?
标签: javascript arrays comparison