Неожиданная запятая с помощью map()
у меня есть массив со списком элементов:
description: [
'HTML & CSS',
'Responsive Design Fundamentals',
'Javascript object-oriented programming',
'jQuery',
'Website Performance Optimization',
'CRP and RAIL',
'REST API and Ajax',
'Javascript Design patterns',
'Bootsrap Framework',
'Polymer Web Elements'
],
Я пытаюсь добавить этот список в HTML-элемент, используя строки шаблона:
var description = [
'HTML & CSS',
'Javascript object-oriented programming',
'Progressive Web apps (PWAs)',
'Website Performance Optimization',
'Webpack and Gulp workflows',
'Fullstack React.js',
'Web Components',
'Responsive web design',
'Sketch design',
'GraphQL and Relay'
]
$('body').append(
`
<div class="description">
<ul>
${description.map(
function(work) {
return `<li>${work}</li>`
}
)}</ul>
</div>
`
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
в результате я получаю неожиданный запятую между каждым элементом списка (см. Фрагмент ниже)
как я могу избежать этого?
редактировать: фрагмент добавил
2 ответов
объяснение
шаблон литералы использовать toString()
метод, который по умолчанию присоединяется к возвращаемому массиву map
С ,
.
Чтобы избежать этой "проблемы" вы можете использовать join('')
код
var description = [
'HTML & CSS',
'Javascript object-oriented programming',
'Progressive Web apps (PWAs)',
'Website Performance Optimization',
'Webpack and Gulp workflows',
'Fullstack React.js',
'Web Components',
'Responsive web design',
'Sketch design',
'GraphQL and Relay'
]
$('body').append(
`
<div class="description">
<ul>
${
description.map(function(work) {
return `<li>${work}</li>`
}).join('')
}
</ul>
</div>
`
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
.map()
возвращает массив. Вы, вероятно, хотите вернуть строка, содержащий элементы массива объединяются вместе. Вы можете сделать это с .join('')
:
var description = [
'HTML & CSS',
'Javascript object-oriented programming',
'Progressive Web apps (PWAs)',
'Website Performance Optimization',
'Webpack and Gulp workflows',
'Fullstack React.js',
'Web Components',
'Responsive web design',
'Sketch design',
'GraphQL and Relay'
]
$('body').append(
`
<div class="description">
<ul>
${description.map(
function(work) {
return `<li>${work}</li>`
}
).join('') /* added .join('') here */}</ul>
</div>
`
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>