You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript检测字符串数组含Day/Hour等关键词不生效问题排查

问题修复方案

故障根因

Array.includes() 方法执行的是完全全等匹配,你采集到的数组元素是"1 Hour"、"2 Days"这类带数值、空格的完整字符串,和你传入的目标关键词"Hour"、"Days"并不完全相等,因此匹配逻辑永远无法触发,始终进入else分支。

修复方案

你可以通过Array.some() + 字符串包含判断的逻辑实现需求,同时可以简化重复的if判断逻辑,优化后代码如下:

// 提前定义要匹配的关键词列表
const matchKeywords = ['Hour', 'Hours', 'Day', 'Days']
let isActive = true
// 直接遍历.time元素,无需先转存全部文本到数组,匹配到就提前终止遍历
const hasLongTime = Array.from(document.querySelectorAll('.time')).some(el => {
  const text = el.textContent.trim()
  // 判断当前文本是否包含任意一个目标关键词
  return matchKeywords.some(keyword => text.includes(keyword))
})
await sleep(150)
if (hasLongTime) {
  isActive = false
  console.log('Above one hour')
} else {
  console.log('under 1 hour')
}

兼容原有采集逻辑的修改方案

如果你的场景需要保留先采集全部时间文本的逻辑,也可以对已有的数组做如下修改:

const matchKeywords = ['Hour', 'Hours', 'Day', 'Days']
// 原有采集逻辑保持不变
let cardAuctionRemainingTimeString = document.querySelectorAll('.time');
let arrayCardAuctionTimeRemaining = [];
for (let times = 0; times < cardAuctionRemainingTimeString.length; times++) {
    let time = cardAuctionRemainingTimeString[times].textContent;
    arrayCardAuctionTimeRemaining.push(time);
}
await sleep(150);
// 仅修改判断逻辑即可
const hasLongTime = arrayCardAuctionTimeRemaining.some(timeText => {
  return matchKeywords.some(keyword => timeText.includes(keyword))
})
if (hasLongTime) {
    isActive = false;
    console.log('Above one hour');
} else {
    console.log('under 1 hour');
}

内容的提问来源于stack exchange,提问作者exec85

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:36:04