Ревью
В вашем решении можно улучшить мелочи:
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(' '); // склеить в строку через пробел