Функция должна получать из i-7 ключ. Если ключ есть в a7 то выводить 1 в out-7, если нет-0

При нажатии кнопки должно выводить 1 в out-7, если ключ совпадает со значением инпута. Или должно выводить 0, если ключ не совпадает со значением инпута.

Почему при любом значении инпута выводит 0. Даже если ключ совпадает со значением инпута выводит 0, а не 1.

let a7 = {
  'a': 1,
  b: 2,
  c: 3
}

let out7 = document.querySelector('.out-7');

document.querySelector('.b-7').onclick = f7;

function f7() {
  let i7 = document.querySelector('.i-7').value;

  for (let key in a7) {
    if (key === i7) {
      out7.innerHTML = 1;
    } else {
      out7.innerHTML = 0;
    }
  }
}
<h1>Task 7</h1>
<input type="text" class="i-7" value="">
<div class="out-7"></div>
<button class="b-7">b-7</button>


Ответы (3 шт):

Автор решения: Алексей Шиманский

Цикл продолжает свою работу после совпадения. Пока весь не отработает - будет сравнивать значения и выводить лишь результат последнего сравнения. Не знаю, что в итоге хотели вы сделать...но ниже код тоже не айс. Просто пример, что при прерывании цикла - выводится например совпадение

let a7 = {
  'a': 1,
  b: 2,
  c: 3
}

let out7 = document.querySelector('.out-7');

document.querySelector('.b-7').onclick = f7;

function f7() {
  let i7 = document.querySelector('.i-7').value;
  
  for (let key in a7) {    
    if (key === i7) {
      out7.innerHTML = 1;
      break;
    } else {
      out7.innerHTML = 0;
      break;
    }
  }
}
<h1>Task 7</h1>
<input type="text" class="i-7" value="">
<div class="out-7"></div>
<button class="b-7">b-7</button>


Тут пример вывода общего сравнения всех ключей:

let a7 = {
  'a': 1,
  b: 2,
  c: 3
}

let out7 = document.querySelector('.out-7');

document.querySelector('.b-7').onclick = f7;

function f7() {
    let i7 = document.querySelector('.i-7').value;
    let resultHtml = '';
  
    for (let key in a7) {    
        resultHtml += `key === i7: ${key === i7} <br/>`;    
    }
  
    out7.innerHTML = resultHtml;
}
<h1>Task 7</h1>
<input type="text" class="i-7" value="">
<div class="out-7"></div>
<button class="b-7">b-7</button>

→ Ссылка
Автор решения: Александр Лисёнков

Если нужно вывести всего 2 значения 1 или 0 то подойдёт такое решение break нужно указать после первого цикла если указать 2 break то проверяется только первый элемент массива остальные показывает что они отсутствуют

<p><b>Task 7.</b></p>
<div class="form-control">Input i-7 
<input type="text" class="i-7"></div>
<button class="button-primary b-7">Task-7</button>
<div class="out-7"></div>

let a7 = {
    "b": 17,
    "e": 22,
    "c": 33
};

function f7() {
    let a = document.querySelector('.i-7').value;
    for(let key in a7) {
        if (key === a) {
        console.log(1);
        document.querySelector('.out-7').textContent = 1;
        break;
    } 
    else {
        console.log(0);
        document.querySelector('.out-7').textContent = 0;
    }
    }
}
→ Ссылка
Автор решения: Bogdana

Добавьте input .i-7. При нажатии b-7 выполняете функцию f7. Функция должна получать из i-7 ключ. Если такой ключ есть в a7 то выводить 1 в out-7, если нет - 0.

let a7 = {
    "b": 17,
    "e": 22

};


function f7() {
    let i7 = document.querySelector('.i-7').value;
    let out = '';
    out = 0;
    for (let key in a7) {
        if (key == i7) {
            out = 1;
        }

    }
    console.log(a7);
    document.querySelector('.out-7').innerHTML = out;
}

document.querySelector('.b-7').onclick = f7;
→ Ссылка