【问题标题】:Array map in template literal renders an extra comma between items [duplicate]模板文字中的数组映射在项目之间呈现额外的逗号 [重复]
【发布时间】:2018-11-19 18:13:25
【问题描述】:

在下面的示例中,我尝试呈现帖子列表(标题、正文及其标签):

const container = $('.container');
posts.forEach((post)=> {
 container.append(
`<div>
  <h2>${post.title}</h2>
  <p>${post.body}</p>
  <div>
   ${post.tags.map((tag) => {
     `<span>${tag.name}</span>`
   })}
  </div> 
 </div>`)
});

然而,输出会在标签之间呈现一个额外的逗号。我试图输出“测试”而不是实际的标签名称,以及将 span 标签换成不同的 html 标签,但结果仍然相同。

我曾尝试搜索此问题,但没有找到任何其他人对模板文字有此问题。

【问题讨论】:

  • 我也被JSX催眠了..

标签: javascript ecmascript-6 template-literals


【解决方案1】:

这正是 Array.join() 默认的工作方式(在隐式字符串化数组时调用),在数组条目之间添加逗号 - 这是 map() 返回的内容 -> 一个数组。您可以通过自己调用它来轻松摆脱它,将一个空字符串作为参数传递给 join()

${post.tags.map((tag) => `<span>${tag.name}</span>`).join('')}

请注意,您也需要从地图返回...

【讨论】:

  • 谢谢你的解释,这确实解决了问题。
猜你喜欢
  • 2022-11-08
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
相关资源
最近更新 更多