Javascript для итерации цикла. Что-то не так

#javascript #arrays #loops #for-loop

Вопрос:

У меня есть список названных объектов data .

И 1 входной тег.

Я хочу проверить, существует ли входное значение в person1 ключе данных. Если существует, я записываю входное значение и person2 значение ключей. Еще напиши I don't understand .

Как этот код дает true ответ. это wrong .

Попробуй How old are you это. Если вы введете это, оно должно дать I don't understand 2 раза и 30

 function SendMessage() {
    var input = document.getElementById('person'),
        sender = document.createElement('p'),
        receiver = sender.cloneNode(true),
        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);
    for (var i = 0; i < data.length; i  ) {
        if (input.value === data[i].person1) {
            receiver.innerText = data[i].person2;
            document.body.appendChild(receiver);
            i = data.length;
        } else {
            receiver.innerText = "I don't understand";
            document.body.appendChild(receiver);
        }
    }
} 
 <input id="person">
<button onclick="SendMessage()">Send message</button> 

Ответ №1:

Я нашел свой пропущенный код. ибо цикл работает нормально. Я создаю элемент раньше для цикла. И на каждой итерации я просто изменяю эти элементы внутреннего текста. Он пишет I don't understand . Но когда он найдет правильный ответ. Это перезаписывает ответ.

  

function SendMessage() { 
    var input = document.getElementById('person'), 
    sender = document.createElement('p'), 
    receiver = sender.cloneNode(true), 
    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); 
    for (var i = 0; i < data.length; i  ) { 
        if (input.value === data[i].person1) { 
            receiver.innerText = data[i].person2; 
            console.log(data[i].person2); 
            document.body.appendChild(receiver); 
            i = data.length; 
        } else { 
            console.log("I don't understand"); 
            receiver.innerText = "I don't understand"; 
            document.body.appendChild(receiver); 
        } 
    } 
}  
  
<input id="person"> 
<button onclick="SendMessage()">Send message</button>