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

数组元素存在性校验失效,添加ID功能异常求助

问题解决:无法添加多个ID到Cookie对比列表

你的代码存在两个关键问题:

  1. 判断逻辑完全写反:当前代码是「ID已经在列表里时才执行添加操作」,和你预期的功能完全相反
  2. 类型不匹配:$(this).data('id')返回的是数字类型,而从Cookie读取分割后的数组元素是字符串类型,导致indexOf判断是否存在时出错

修正后的代码如下:

$(function(){
    $(".js-compare-add").click(function(){
        // 把ID转为字符串,和Cookie中存储的类型统一
        var item_id = String($(this).data('id'));

        if(Cookies.get('compare_id_list')){
            var compareListStr = Cookies.get('compare_id_list');
            var compareListArr = compareListStr.split(',');
            
            // 修正逻辑:只有ID不在列表里时才执行添加
            if (compareListArr.indexOf(item_id) === -1) {
                compareListArr.push(item_id);
                Cookies.set('compare_id_list', compareListArr.join(','), {expires: 10}); 
                alert('Save! ' + item_id);
            } else {
                alert('already have ' + item_id);
            }

        } else {
            alert('There was no list, we created it and added this position ' + item_id);
            Cookies.set('compare_id_list', item_id);
        }
    });
});

修改说明:

  • 统一item_id的类型为字符串,避免数字与字符串对比时indexOf判断失效
  • 颠倒判断逻辑,确保只有ID未存在于列表中时才执行添加操作
  • 简化数组初始化代码,因前面已确认Cookie存在,无需额外判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:52:42