基于页面ID为多产品定义jQuery数组的技术需求与实现问询
页面ID与产品关联的数组实现方案
需求
- 建立**页面ID(平台自动生成)**和对应产品的关联映射
- 实现两个核心判断:
- 校验当前页面ID是否存在于任意产品的ID集合中
- 校验当前页面ID是否属于特定产品(比如product1)的ID集合,匹配则展示该产品专属内容
修正后的实现代码
// 用对象存储产品与页面ID的映射,比数组更适配键值对场景 const solutions = { product1: [46, 47, 48, 49], product2: [40, 41, 42, 43] }; const currentID = pageData.content.category.id; // 获取当前页面的ID // 扁平化所有产品的页面ID,用于快速判断当前ID是否在任意产品范围内 const allPageIDs = Object.values(solutions).flat(); // 第一个判断:检查当前ID是否属于任意产品的页面集合 if (allPageIDs.includes(currentID)) { // 这里写通用逻辑,比如显示产品相关的基础模块 console.log("当前页面属于某产品专属页面"); } // 第二个判断:精准检查当前ID是否属于product1的页面集合 if (solutions.product1.includes(currentID)) { // 这里写product1的专属逻辑,比如展示定制化内容 console.log("当前页面属于product1,展示对应内容"); } // 如果需要遍历所有产品,自动匹配当前ID所属产品并执行逻辑 Object.entries(solutions).forEach(([productName, pageIDs]) => { if (pageIDs.includes(currentID)) { console.log(`当前页面属于${productName},展示对应内容`); } });
原代码问题说明
原给出的代码存在两处关键问题:
- 用数组
[]存储字符串键的映射不符合规范,应该用普通对象{}来管理键值对 - 第一个
if判断((pageData.content.category.id == val) > -1)逻辑完全错误:val是数组类型,和数字ID比较结果为false,转为数字后是0,0 > -1永远成立,根本起不到校验作用 - 推荐用原生JS的
includes()替代jQuery的$.inArray(),无需依赖第三方库,更贴合现代JS开发规范
内容的提问来源于stack exchange,提问作者pathetic.aesthetic
相关产品推荐
相关产品推荐

