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

如何优化querySelectorAll返回NodeList多文本值的条件匹配写法

代码优化方案

1. NodeList提取innerText为数组的优化

你原有代码重复执行DOM查询,性能较差,可替换为以下更简洁的实现:

// 写法1:Array.from 直接映射转换,兼容性好
const fltarr = Array.from(document.querySelectorAll("div.flight-number"), el => el.innerText.trim())

// 写法2:扩展运算符+map,写法更直观
const fltarr = [...document.querySelectorAll("div.flight-number")].map(el => el.innerText.trim())

以上两种写法都只执行一次DOM查询,代码量远低于原有for循环写法,可读性更好。

2. 多||条件判断的简化方案

针对大量逻辑或拼接的判断场景,最常用的简化方式是将判断条件存入数组,配合数组方法实现判断:

场景1:判断单个值是否匹配多个指定值

原有冗余写法示例:

if (flightCode === 'CA1234' || flightCode === 'MU5678' || flightCode === 'CZ9012' || flightCode === 'HU3456') {
  // 执行对应逻辑
}

简化写法:

// 把所有要匹配的目标值存入数组
const targetFlightCodes = ['CA1234', 'MU5678', 'CZ9012', 'HU3456']
// 用includes方法判断值是否在数组中
if (targetFlightCodes.includes(flightCode)) {
  // 执行对应逻辑
}

如果需要自定义匹配规则(比如不区分大小写、模糊匹配等),可以替换为some方法:

// 示例:不区分大小写匹配航班号
const targetFlightCodes = ['ca1234', 'mu5678', 'cz9012', 'hu3456']
if (targetFlightCodes.some(code => code === flightCode.toLowerCase())) {
  // 执行对应逻辑
}

场景2:判断多个布尔条件是否有一个成立

原有冗余写法示例:

if (isAdult || hasVipPermission || isInternalStaff || hasTemporaryPass) {
  // 放行
}

简化写法:

const passConditions = [isAdult, hasVipPermission, isInternalStaff, hasTemporaryPass]
// some(Boolean) 等价于判断数组中是否存在至少一个真值
if (passConditions.some(Boolean)) {
  // 放行
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:54:03