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

JavaScript for循环遍历对象数组匹配输入值逻辑错误如何修复

问题原因

  • 循环逻辑错误:每遍历data中的一个元素,不管是否匹配都会直接向页面追加内容。当你输入How old are you时,数组前两个元素的person1都和输入值不匹配,所以前两次循环都会走else分支,先后追加两次I don't understand,第三次循环匹配成功才追加30,就出现了你看到的错误现象。
  • 额外逻辑漏洞:你每次都复用同一个receiver元素调用appendChild,实际上同一个DOM节点多次调用appendChild会被移动位置而不是新增节点,之前能看到多条输出属于巧合的错误表现。

修复方案

调整逻辑为先遍历完全部数组,确认是否有匹配项后再统一输出内容,修复后代码如下:

function SendMessage() {
    var input = document.getElementById('person'),
        sender = document.createElement('p'),
        data = [{
            "person1": "Hey",
            "person2": "Hey, How are you?"
        }, {
            "person1": "Hello",
            "person2": "Hello friend"
        }, {
            "person1": "How old are you",
            "person2": "30"
        }
    ];

    sender.innerText = input.value;
    document.body.appendChild(sender);
    
    // 先遍历查找匹配项
    let matchResult = null;
    for (var i = 0; i < data.length; i++) {
        if (input.value === data[i].person1) {
            matchResult = data[i].person2;
            break;
        }
    }
    
    // 遍历结束后统一输出
    const receiver = document.createElement('p');
    receiver.innerText = matchResult ? matchResult : "I don't understand";
    document.body.appendChild(receiver);
}

HTML代码无需修改:

<input id="person">
<button onclick="SendMessage()">Send message</button>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:57:00