map()
возвращает массив , а не строку. Так что в первом примере это не работает, потому что вам не следует присваивать массив свойству innerHTML
элемента.
Чтобы исправить ошибку и превратить массив в строку, toString()
вызывается в массиве для вас. Это приводит к запятым, которые вы видите.
var x = [1 , 2, 3, 4];
var final = x.map(function (value) {
return value + "<br>" ;
});
console.log(final) //-> ["1<br>", "2<br>", "3<br>", "4<br>"]
console.log(final.toString()) //-> "1<br>,2<br>,3<br>,4<br>"
Во втором примере вы продолжаете добавлять в строку, поэтому в результате получается строка, которую вы можете установить как innerHTML
без проблем.
var txt = "";
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(function (value) {
txt = txt + value + "<br>";
});
console.log(txt) //-> "45<br>4<br>9<br>16<br>25<br>"
Вы также можете заставить работать первую версию с join()
, чтобы поместить все элементы в строку.
var x = [1 , 2, 3, 4];
var final = x.map(function (value) {
return value + "<br>" ;
});
console.log(final.join('')) //-> "1<br>2<br>3<br>4<br>"
Наконец, вы можете просто использовать join('<br>')
в исходном массиве, чтобы сделать то, что вы хотите, очень простым способом:
var x = [1 , 2, 3, 4];
var final = x.join('<br>')
console.log(final) //-> "1<br>2<br>3<br>4"