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

Vue+TypeScript中用forEach查找JSON值的键并修改对应值

解决方案

直接通过遍历checkedData提取掩码前缀与目标键,完成映射计算后更新tracelogMaskData,Vue+TypeScript环境下的实现代码如下:

// 初始化数据
const checkedData = { 0: 'infoclient', 1: 'warnmanager', 2: 'errorserver', 3: 'warnpublic', 4: 'errornetwork' };
const masks = ['info', 'warn', 'error', 'threadentry', 'tracefunc'];
const tracelogMaskData = { client: 8, manager: 15, server: 7, public: 18, network: 6 };

// 遍历处理每个checkedData项
Object.values(checkedData).forEach(item => {
  // 匹配当前项对应的mask前缀
  const matchedMask = masks.find(mask => item.startsWith(mask));
  if (!matchedMask) return; // 无匹配项则跳过

  // 获取mask索引并计算新值
  const maskIndex = masks.indexOf(matchedMask);
  const newValue = 2 ** maskIndex;

  // 提取tracelogMaskData对应的键并更新值
  const targetKey = item.replace(matchedMask, '') as keyof typeof tracelogMaskData;
  tracelogMaskData[targetKey] = newValue;
});

console.log(tracelogMaskData);
// 输出结果:{ client: 1, manager: 2, server: 4, public: 2, network: 4 }

核心逻辑说明

  • 遍历简化:用Object.values()直接获取checkedData的所有值,跳过无意义的数字键,简化遍历流程
  • 掩码匹配:通过startsWith()快速定位当前项对应的掩码前缀,再用indexOf()拿到掩码索引
  • 类型安全:用as keyof typeof tracelogMaskData做TypeScript类型断言,确保提取的目标键符合tracelogMaskData的键类型
  • 值更新:直接通过对象键赋值完成替换,用ES6指数运算符**替代Math.pow,代码更简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 19:45:58