如何对动态生成的字符串slice进行限定范围的比较?
解决方案
首先,我们需要先把每个时间字符串里**需要比较的核心部分(星期+日期+开始时间)**提取出来,再进行对比——毕竟结束时间可能变化,我们只关心到「8:00AM」这部分的内容是否一致。
步骤1:写一个提取核心对比部分的辅助函数
这个函数会把每个时间字符串拆分,取出前三个关键部分(星期、日期、开始时间)并重新拼接:
function extractCompareKey(timeStr) { // 按空格拆分字符串,取前三个部分(星期, 日期, 开始时间) const keyParts = timeStr.split(' ').slice(0, 3); // 重新拼接成用于对比的字符串 return keyParts.join(' '); }
步骤2:遍历两个数组,用提取后的关键字对比
你可以用原生JS循环,或者jQuery的$.each来遍历,这里给出两种写法:
原生JS循环版本
for (let i = 0; i < slice1.length; i++) { const slice1Key = extractCompareKey(slice1[i]); for (let j = 0; j < slice2.length; j++) { const slice2Key = extractCompareKey(slice2[j]); if (slice1Key === slice2Key) { console.log("匹配到的记录:", slice2[j]); // 如果找到匹配后不需要继续对比当前元素,可以加break; } } }
jQuery遍历版本
如果你习惯用jQuery的方法,可以这样写:
$.each(slice1, function(index1, item1) { const key1 = extractCompareKey(item1); $.each(slice2, function(index2, item2) { const key2 = extractCompareKey(item2); if (key1 === key2) { console.log("匹配到的记录:", item2); } }); });
为什么这样可行?
比如对于slice1里的"Monday, 06-04-2018 8:00AM 11:00AM",提取后得到"Monday, 06-04-2018 8:00AM";slice2里的"Monday, 06-04-2018 8:00AM 10:00AM"提取后也是同样的字符串,这样就能正确匹配到,完全不受结束时间变化的影响。
内容的提问来源于stack exchange,提问作者gourav
相关产品推荐
相关产品推荐

