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

如何判断localStorage中的值是否在数组中?及代码排查求助

问题分析与解决方案

你的代码里有两个关键问题导致数组检查没生效,咱们一步步理清楚:

1. $.inArray的返回值判断逻辑错误

$.inArray()的返回规则是:

  • 找到匹配元素时,返回它在数组中的索引值(从0开始计数)
  • 未找到时返回-1

你当前直接用if($.inArray(curPostId, lines))做判断,会出现逻辑漏洞:当元素是数组第一个元素(索引为0)时,0会被JavaScript视为false,导致条件不执行;只有元素在索引1及以后时才会触发条件,这显然不符合你“只要元素存在就执行”的需求。

正确的判断逻辑应该是检查返回值不等于-1,以此确认元素存在于数组中。

2. 数据类型不匹配

$(".my_post_id").attr("data-id")返回的是字符串类型,而你从localStorage通过JSON.parse得到的lines数组里的元素是数字类型。$.inArray()采用严格匹配(和===逻辑一致),所以字符串"248"和数字248会被判定为不相等,自然找不到匹配项。

修正后的代码

// 将获取到的data-id转换为数字类型,保证和数组元素类型一致
var curPostId = Number($(".my_post_id").attr("data-id"));
// 正确判断元素是否存在于数组中
if ($.inArray(curPostId, lines) !== -1) {
    $('#'+localStorage.getItem('saveButton')).attr('disabled', true);
}

额外验证建议

你可以加两行日志来确认类型和返回值是否符合预期:

console.log(typeof curPostId); // 应输出"number"
console.log($.inArray(curPostId, lines)); // 应输出1(因为248是数组的第二个元素)

这样就能确保类型匹配,且条件判断逻辑正确啦。

内容的提问来源于stack exchange,提问作者rob.m

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:06:40