JavaScript 字符串模板 + map 魔法:优雅地把数据变成 HTML 页面

🎭 引言:写代码就像谈恋爱,拼接字符串就像强行凑合

从前有个程序员,他想把数据展示在页面上。

他打开电脑,深吸一口气,开始写:

arduino 复制代码
javascript
深色版本
ul.innerHTML += '<li>' + friend.name + '</li>'; // 哎呀,少个加号
ul.innerHTML += '<li>'+ friend.name +'</li>'; // 哎哟,引号套娃了

他看着满屏的 +',突然意识到一件事:

有些爱情是强求不来的,就像有些代码是不该用拼接的。

就在这时,ES6 轻轻走来,带着两个神器:

  • 字符串模板:多行、换行、变量插入,一气呵成;
  • map 方法:优雅遍历,转换格式,一行搞定;

从此,他的代码不再"硬拼",而是像写诗一样自然,像恋爱一样甜蜜。

第一招:字符串模板 ------ 写 HTML 一样自然

✨ 用反引号 ````` 包裹内容,变量直接 ${} 插进去:

bash 复制代码
`
<li>
  ${friend.name} -
  <i>${friend.hometown}</i>
</li>
`

这写法多舒服?就像你在写 HTML,又像是在写日记,完全不用再担心引号、拼接、换行这些"祖传 bug"。

小贴士:字符串模板还能写函数调用、标签模板。


🧠 第二招:map 方法 ------ 数据变格式,一行搞定

❓ 什么是 map?

简单来说,它就是一个能帮你"把老数据变成新数据"的工具。

比如你有一堆 JSON 数据:

ini 复制代码
const friends = [
  { name: '游志兴', hometown: '花果山' },
  { name: '张升丰', hometown: 'hq的心里' },
  { name: '柳若智', hometown: 'zq的心里' },
  { name: '曾智', hometown: '四海为家' }
];

你想把它们都变成 <li> 标签?那 map 就是你的武器:

bash 复制代码
friends.map(friend => {
  return `
    <li>
      ${friend.name} -
      <i>${friend.hometown}</i>
    </li>
  `;
});

执行完你会发现,原来的数组还在,但你得到了一个全新的 HTML 字符串数组!

特点总结:

  • 不修改原数组;
  • 返回新数组;
  • 超适合做数据转换;
  • 配合模板字符串,简直天作之合!

🧱 合体技:map + join + innerHTML = 页面展示一条龙服务

我们再来完整走一遍流程:

  1. map 把数据转成 HTML 字符串数组;
  2. join('') 把数组合并成完整的 HTML 字符串;
  3. innerHTML 把 HTML 插入页面。
javascript 复制代码
const htmlList = friends.map(friend => {
  return `
    <li>
      ${friend.name} -
      <i>${friend.hometown}</i>
    </li>
  `;
});

document.getElementById('friends').innerHTML = htmlList.join('');

是不是很丝滑?是不是感觉写代码像在写童话?


🤖 对比一下:传统 for 循环 vs 现代写法

方式 写法 感受
传统 for 循环 拼接字符串、一堆加号、容易出错 心态爆炸,太复杂了
现代 map + 模板 结构清晰、变量插入方便 便携易懂,言简意赅

别再让代码看起来像"乱码",用现代写法,让你的代码也能拥有"高颜值"。


🧑‍🏫 补充讲解:forEach ------ 适合执行副作用的遍历方式

在 JavaScript 中,除了 map,我们还有一个非常常用的数组方法:forEach 。它和 map 一样都可以用来遍历数组,但它们之间有一个关键区别:

方法 是否返回新数组 适用场景
map ✅ 是(返回新数组) 转换数据格式,如生成 HTML 字符串
forEach ❌ 否(没有返回值) 执行副作用,比如修改 DOM、打印日志等

🔍 简单用法示例:

javascript 复制代码
friends.forEach(friend => {
  console.log(`${friend.name} 的家乡是 ${friend.hometown}`);
});

这段代码会依次输出每个朋友的名字和家乡,但它不会返回任何值。


💡 什么时候用 forEach

当你不需要把整个数组"转换"成一个新的数组,而只是想对每一项做一些操作时,就可以选择 forEach

例如,直接操作 DOM:

ini 复制代码
const ul = document.getElementById('friends');
friends.forEach(friend => {
  const li = document.createElement('li');
  li.innerHTML = `${friend.name} - <i>${friend.hometown}</i>`;
  ul.appendChild(li);
});
  • appendChild 的意思是"把某个元素添加为子元素"。
  • 现在,你做的这个 <li> 终于被放进页面上的 <ul> 列表中了。
  • 就像你终于把那个装好内容的盒子,放进了"friends"货架里。

这种方式虽然也能实现页面渲染,但不像 map 那样结构清晰、逻辑分离。你可以把它理解为一种"边走边建"的方式。


⚖️ map vs forEach:选哪个更合适?

对比维度 map forEach
返回值 新数组 没有返回值
是否改变原数组 不会 不会
可链式调用 可以 不建议
是否适合做数据转换 推荐 不推荐
是否适合做副作用(如 DOM 操作) 不太推荐 推荐

小贴士:如果你只是想"展示数据",用 map + join('') 更加结构清晰;

如果你想"立刻操作 DOM"或"触发一些动作",那 forEach 更合适。


🧩 总结一句话:

map 更擅长"转换数据",forEach 更适合"执行副作用"。了解它们的使用场景,才能写出既优雅又实用的代码。


现在你已经掌握了三种现代 JS 中处理数组的重要方式:

  • 使用 字符串模板 写 HTML 结构不再拼接;
  • 使用 map 把数据变成新的数组,结构清晰;
  • 使用 forEach 做一些"现场动作",比如直接操作 DOM。

下次写代码的时候,别再用老式的 for 循环拼接字符串啦,试试这些现代写法,让你的代码也拥有"高颜值 + 高智商"!

相关推荐
崔庆才丨静觅5 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60616 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了6 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅6 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅7 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅7 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment7 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅7 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊7 小时前
jwt介绍
前端
爱敲代码的小鱼7 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax