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

JavaScript for循环仅执行一半次数 数组仅1/2元素被处理问题排查

前端开发异常问题:input输入内容对应数组仅1/2被处理

问题背景

input标签用于收集字符或数字,通过如下代码做映射赋值:

let result  = Object.fromEntries(
  Object.entries(answers2).map(([k, v]) => [k, MSamples[v] ])
);

简化示例

输入asdf时映射后的result总长度为4,结构如下:

0: ['M20']
1: ['M30']
2:['M40']
3: ['M50']
length 4

遍历代码

使用如下for循环遍历result:

for (let i = 0; i < Object.keys(result).length; i++) { }

异常现象

运行后仅输出前2条数据:

0: ['M20']
1: ['M30']

即使注释掉循环体内所有业务代码仅保留console.log('wow'),也只会打印2次wow。

完整可复现代码

JS代码

var MSamples = {
  "A": [
    "M10",
  ],
  "B": [
    "M20",
  ],
  "C": [
    "M30",
  ],
  "D": [
    'M40',
  ],
}

var answers2 = document.getElementById('fname').value;

let result = Object.fromEntries(
  Object.entries(answers2).map(([k, v]) => [k, MSamples[v]])
);

for (let i = 0; i < Object.keys(result).length; i++) {
  console.log('wow');
}

HTML代码

<form class="form1 " action="">
  <input type="text" id="fname" name="fname" value="ABCD">
</form>

问题解决方案

异常根因为for循环体内额外添加了i++语句,移除所有多余的i++实例后功能恢复正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:27:03