javascript - 在模板文字中循环返回未定义
问题描述
我想生成具有两个功能的 HTML 代码作为培训练习。第一个函数创建一个单独的列表项。第二个函数将一个包含实际项目的数组作为输入并创建列表,如下所示:
功能一:
const listItem = item => `<li class="list-item">${item}</li>`;
功能二:
const unorderedList = items => `<ul class="list">\n
${items.forEach((item) => { listItem(item); })}\n
</ul>`;
结果应该是这样的:
<ul class="list">
<li class="list-item">car</li>
<li class="list-item">bike</li>
<li class="list-item">train</li>
</ul>
但是我的代码返回
<ul class="list">
undefined
</ul>
有人可以向我解释我做错了什么吗?
解决方案
您需要使用.map
将每个item
转换为listItem
结果,然后加入:
const listItem = item => `<li class="list-item">${item}</li>`;
const unorderedList = items => `<ul class="list">\n
${items.map(listItem).join('')}\n
</ul>`;
console.log(
unorderedList(['car', 'bike', 'train'])
);
如果你想在 each 之间换行<li>
,那么用换行符而不是空字符串加入(尽管它不会影响渲染的<ul>
):
const listItem = item => `<li class="list-item">${item}</li>`;
const unorderedList = items => `<ul class="list">\n
${items.map(listItem).join('\n')}\n
</ul>`;
console.log(
unorderedList(['car', 'bike', 'train'])
);
推荐阅读
- c# - 有没有办法让一个文本框只接受积极的 ingegers
- android - 认证后关闭门户网站浏览器
- javascript - 在 Puppeteer 中等待 xpath
- reactjs - 在 React 中使用 searchKitManager 时出错
- javascript - 如何通过 Leaflet.MarkerClusterGroup 中的 ID 删除标记
- bash - 使用案例陈述创建菜单
- java - 如何禁用sources.jar和javadoc.jar的下载
- amazon-web-services - 错误 emrfs create-metadata 不适用于 EMR
- javascript - Vuejs 可以将 vue 文件视为 json 兼容的对象定义
- flutter - 如何使容器在 Flutter 中保持/点击时“变亮”?