• Решил задачу, но вопрос насколько верное решение выбрал?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Ревью
    В вашем решении можно улучшить мелочи:
    1. переменная arr нужна только внутри цикла, лучше её туда и поместить. В большом коде проще будет разобраться, когда ограничена область видимости созданных переменных. const вместо let уместнее, т.к. внутри цикла значение key не меняется, да и arr тоже:
    for (const key in a14) {
      const arr = a14[key];
      // ...
    }


    2. т.к. просят «через пробел» – удобнее всего складывать значения в массив, а потом его .join(' ') – это избавляет от проблемы лишнего пробела, да и мухи данные отдельно, оформление отдельно.

    3. вместо innerHTML лучше innerText, т.к. выводимое не содержит разметки, и зачем заставлять браузер пытаться разбирать его как HTML.

    4. вешать слушателя события клика лучше через addEventListener:
    - document.querySelector('.b-14').onclick = f14;
    + document.querySelector('.b-14').addEventListener('click', f14);


    Альтернатива
    На какой стадии обучения выдали это задание, мне неизвестно.
    Но раз там есть и объект a14, то может, слышали про Object.values().
    А раз в задании говорят про массивы, то, может, знакомы методы map() и join()?

    Можно решить так:
    const f14 = () => document.querySelector('.out-14') // элемент для вывода результата
      .innerText = Object.values(a14) // массив массивов [ [1, 2, 23], [3, 4, 5], ... ]
        .map(arr => arr[0]) // вместо каждого под-массива, его первый элемент
        .join(' '); // склеить в строку через пробел
    Ответ написан
    1 комментарий