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

如何在jQuery foreach循环中匹配认证用户ID?代码失效求助

问题修复方案

核心问题分析

  • 变量作用域错误:targetfound在$.each回调内部声明,外部无法访问,导致后续判断逻辑失效
  • 类型不匹配隐患:后端输出的用户ID是数字,但前端用引号包裹成了字符串,可能导致相等判断异常
  • 未初始化变量:如果循环中没有匹配项,targetfound未被定义,会引发ReferenceError

修复后的代码

// 去掉引号,让user保持数字类型,避免类型不匹配
let user = <?= Auth::User()->id ?>;    
// 先在循环外初始化变量,确保外部能访问
let targetfound = false;

$.each(data.postlikes, function(key, postliker){                                                                          
    // 用严格相等===判断,避免类型隐式转换问题
    if(postliker.user_id === user){                                 
        targetfound = true;
        // 找到匹配项后直接跳出循环,提升性能
        return false;
    }                          
});

if(targetfound){
    $('.posted-area').append('<button class="btn-primary" id="btnLiked" onclick="btnUnLikefunction()"> Liked!</button>');
}else{
    $('.posted-area').append('<button class="btn-danger" id="btnLike" onclick="btnLikefunction()">Like </button>');
}

关键修复点说明

  • 移除user变量的引号,让其保持数字类型,和postliker.user_id类型统一,用===做严格相等判断
  • 在$.each循环外部初始化targetfound为false,确保无论是否匹配到,变量都有定义
  • 找到匹配项后通过return false跳出$.each循环,无需遍历剩余数据,提升效率
  • 将targetfound改为布尔值赋值,更符合“是否找到匹配项”的判断逻辑(原代码赋值为用户ID,属于冗余操作)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:40:36