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

JavaScript数值比较结果错误:三字段卡片搜索功能query3判断异常

故障根因
  • 布尔变量的初始化位置错误
    你把boolean2、boolean3的初始值定义在了.each()遍历循环的外部,导致变量值会被上一轮遍历的结果污染。只要前一轮遍历把boolean3赋值为true,后续所有遍历执行boolean3 = (boolean3 ? boolean3 : (price <= query3))时,三元运算符会直接返回已有的true值,根本不会执行后面的price <= query3比较逻辑,所以出现比较结果为false但boolean3依旧为true的现象。

  • 多条件判断写法错误
    你当前用来判断是否显示卡片的boolean1 === boolean2 === boolean3写法不符合逻辑要求。这种连续相等判断的实际执行逻辑是先计算boolean1 === boolean2得到一个布尔值,再将这个结果和boolean3做相等判断,完全不能实现「三个条件同时满足才显示卡片」的需求。

修复方案

把三个布尔变量的初始化都放到each循环内部,同时修改多条件判断的写法:

const marketSearchFunction = function() {
  const query1 = $('#market-search').val().toLowerCase();
  const query2 = parseFloat($('#market-min').val());
  const query3 = parseFloat($('#market-max').val());
  $('.market-frame').each(function(){
    // 每遍历一张卡片都重新初始化三个判断条件,避免变量污染
    let boolean1 = false
    let boolean2 = isNaN(query2) ? true : false
    let boolean3 = isNaN(query3) ? true : false
    const price = parseFloat($(this).find('.price').data('value'))
    boolean1 = $(this).text().toLowerCase().indexOf(query1) !== -1
    boolean2 = boolean2 || (price >= query2)
    boolean3 = boolean3 || (price <= query3)
    console.log(price, query3, boolean3, (price <= query3))
    // 三个条件同时为true才显示卡片
    showCard($(this), boolean1 && boolean2 && boolean3)
  });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:06:03