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

JavaScript如何过滤响应中支持类型的数据并拦截非法值提交

问题解决方案

核心问题原因

  • 原遍历使用的forEach方法不支持中断循环,回调内的return/break无法终止整体遍历,非法值出现后后续逻辑仍会执行
  • 判断逻辑错误:res.hasOwnProperty(valMapper[data])仅判断属性是否存在,但你的res本身就包含edit属性,只是值为false,所以传入C时条件仍会成立,不会进入异常分支

修复代码

let res = {
    'create': true,
    'edit': false,
    'delete': true,
};

const valMapper = {
    'A': 'create',
    'C': 'edit',
    'D': 'delete',
};

const values = ['A', 'C', 'D'];
// 用支持中断的for...of循环替代forEach
for (const data of values) {
    const type = valMapper[data];
    // 优先判断是否有对应映射、且res中对应类型权限为true
    if (type && res[type] === true) {
        console.log(data);
        // 这里写你的正常提交逻辑
    } else {
        console.log('输入的数据无效,终止提交');
        // 中断循环
        break;
    }
}

逻辑说明

  • 替换forEach为for...of循环,遇到非法值时可直接通过break终止整个遍历,阻止后续数据提交
  • 修正判断条件:除了匹配映射关系外,额外校验res中对应类型的取值为true,只有允许的create/delete对应才会通过校验,edit和其他不存在的类型都会进入异常分支

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:27:01