js常用的数组遍历方式
以下是一个完整的示例,将包含图片、文字和数字的数组渲染到 HTML 页面,使用 多种遍历方式 实现不同的渲染效果:
1. 准备数据(数组)
const items = [{ id: 1, name: "苹果", price: 5.99, image: "https://via.placeholder.com/100?text=Apple" },{ id: 2, name: "香蕉", price: 3.49, image: "https://via.placeholder.com/100?text=Banana" },{ id: 3, name: "橙子", price: 4.99, image: "https://via.placeholder.com/100?text=Orange" }
];
2. HTML 结构
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>数组渲染示例</title><style>.item { border: 1px solid #ddd; padding: 10px; margin: 10px; display: inline-block; text-align: center;}.item img { width: 100px; height: 100px; }</style>
</head>
<body><h2>1. forEach 渲染</h2><div id="forEach-container"></div><h2>2. map + join 渲染</h2><div id="map-container"></div><h2>3. for...of 渲染</h2><div id="forOf-container"></div><script src="script.js"></script>
</body>
</html>
3. JavaScript 渲染逻辑(script.js
)
// 数据
const items = [{ id: 1, name: "苹果", price: 5.99, image: "https://via.placeholder.com/100?text=Apple" },{ id: 2, name: "香蕉", price: 3.49, image: "https://via.placeholder.com/100?text=Banana" },{ id: 3, name: "橙子", price: 4.99, image: "https://via.placeholder.com/100?text=Orange" }
];// 1. forEach 方式
const forEachContainer = document.getElementById('forEach-container');
items.forEach(item => {const div = document.createElement('div');div.className = 'item';div.innerHTML = `<img src="${item.image}" alt="${item.name}"><h3>${item.name}</h3><p>价格: ¥${item.price.toFixed(2)}</p>`;forEachContainer.appendChild(div);
});// 2. map + join 方式
const mapContainer = document.getElementById('map-container');
const htmlString = items.map(item => `<div class="item"><img src="${item.image}" alt="${item.name}"><h3>${item.name}</h3><p>价格: ¥${item.price.toFixed(2)}</p></div>
`).join('');
mapContainer.innerHTML = htmlString;// 3. for...of 方式
const forOfContainer = document.getElementById('forOf-container');
for (const item of items) {const div = document.createElement('div');div.className = 'item';div.innerHTML = `<img src="${item.image}" alt="${item.name}"><h3>${item.name}</h3><p>价格: ¥${item.price.toFixed(2)}</p>`;forOfContainer.appendChild(div);
}
4. 效果说明
-
**
forEach
**- 动态创建 DOM 元素并追加到容器中。
- 适合需要逐个处理元素的场景。
-
**
map
+join
**- 生成 HTML 字符串后一次性插入。
- 性能更好(减少 DOM 操作次数)。
-
**
for...of
**- 语法简洁,类似
forEach
,但可以配合break
或continue
控制流程。
- 语法简洁,类似