当前位置: 首页 > news >正文

【前端教程】JavaScript 数组对象遍历与数据展示实战

在前端开发中,处理数组和对象是日常工作的基础。无论是篇文章将通过一个具体案例,详细讲解如何使用JavaScript遍历包含对象的数组,并将数据以清晰的格式展示在页面上。我们会从基础语法开始,逐步优化代码,最终实现一个既美观又实用的数据展示效果。

案例需求分析

我们需要处理一个包含人员信息的数组,每个元素都是一个包含bianhao(编号)、name(姓名)和age(年龄)属性的对象:

var personShuZu = [{'bianhao':007,'name':'诗书画唱1','age':20},{'bianhao':666,'name':'诗书画唱2','age':21},{'bianhao':233,'name':'诗书画唱3','age':22},
];

目标是将这些数据以结构化的方式展示在页面上,替代仅要显示数据,还要保证格式清晰、易于阅读。

基础实现:使用for…of和for…in遍历

首先,我们来分析原始代码的实现思路,它使用了两种不同的循环方式来处理数据:

  1. for...of:用于遍历数组元素(遍历数组的具体内容或值)
  2. for...in:用于遍历对象属性(遍历对象的属性名)

原始代码解析

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>人员信息展示</title>
<script>
var personShuZu=[{'bianhao':007,'name':'诗书画唱1','age':20},{'bianhao':666,'name':'诗书画唱2','age':21},{'bianhao':233,'name':'诗书画唱3','age':22},
];// 使用for...of遍历数组中的每个对象
for(var i of personShuZu){// 使用for...in遍历对象的每个属性for(var j in i){// 输出属性值,并用&nbsp;分隔document.write(i[j]+"&nbsp;");}// 每个对象的数据显示完后换行document.write("<br>");
}
</script>
</head>
<body>
</body>
</html>

这段代码的执行流程是:

  • 外层for...of循环逐个取出数组中的人员对象
  • 内层for...in循环遍历当前人员对象的所有属性
  • 使用document.write()输出属性值,并用空格分隔
  • 每个人员信息输出完成后换行

存在的问题

虽然这段代码能够展示数据,但存在几个明显的不足:

  1. 使用document.write()直接输出,不利于页面布局控制
  2. 没有表头,用户无法直观知道每个数值的含义
  3. 样式简陋,数据展示不够清晰
  4. 编号007会被解析为7(数字前导零问题)

优化实现:结构化展示与样式美化

让我们对代码进行全面优化,实现一个更专业的数据展示效果。

优化思路

  1. 使用DOM操作替代document.write():更灵活地控制页面元素
  2. 添加表头:明确每个数据字段的含义
  3. 使用表格布局:使数据展示更规整
  4. 添加CSS样式:提升视觉效果和可读性
  5. 修复数字前导零问题:确保编号正确显示
  6. 使用更现代的JavaScript语法:如const/let替代var

优化后的完整代码

<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title>人员信息表</title><style>/* 页面基础样式 */body {font-family: 'Arial', sans-serif;margin: 20px;background-color: #f5f5f5;}/* 标题样式 */.title {color: #333;text-align: center;margin-bottom: 20px;}/* 表格样式 */.person-table {width: 100%;max-width: 600px;margin: 0 auto;border-collapse: collapse;background-color: white;box-shadow: 0 2px 5px rgba(0,0,0,0.1);}/* 表头样式 */.person-table th {background-color: #4CAF50;color: white;padding: 12px 15px;text-align: left;}/* 表格单元格样式 */.person-table td, .person-table th {border: 1px solid #ddd;padding: 12px 15px;}/* 表格行悬停效果 */.person-table tr:hover {background-color: #f8f8f8;}</style>
</head>
<body><h2 class="title">人员信息列表</h2><table class="person-table" id="personTable"><!-- 表格内容将通过JavaScript动态生成 --></table><script>// 人员数据(使用const声明常量)const personShuZu = [{'bianhao': '007', 'name': '诗书画唱1', 'age': 20},  // 编号改为字符串以保留前导零{'bianhao': '666', 'name': '诗书画唱2', 'age': 21},{'bianhao': '233', 'name': '诗书画唱3', 'age': 22},];// 获取表格元素const table = document.getElementById('personTable');// 创建表头行const headerRow = document.createElement('tr');// 定义表头文本(与数据属性对应)const headers = ['编号', '姓名', '年龄'];// 定义数据属性名const properties = ['bianhao', 'name', 'age'];// 创建表头单元格headers.forEach(headerText => {const th = document.createElement('th');th.textContent = headerText;headerRow.appendChild(th);});// 将表头添加到表格table.appendChild(headerRow);// 遍历人员数组,创建表格内容行personShuZu.forEach(person => {const row = document.createElement('tr');// 为每个属性创建单元格properties.forEach(prop => {const td = document.createElement('td');td.textContent = person[prop];row.appendChild(td);});// 将行添加到表格table.appendChild(row);});</script>
</body>
</html>

关键知识点解析

1. 数组与对象的遍历方式

JavaScript提供了多种遍历数组和对象的方法,各有适用场景:

  • for…of循环:适合遍历数组元素,语法简洁

    for (const person of personShuZu) {// 处理每个人员对象
    }
    
  • for…in循环:适合遍历对象的属性

    for (const key in person) {// 处理每个属性console.log(key + ': ' + person[key]);
    }
    
  • forEach方法:数组的内置方法,更现代的遍历方式

    personShuZu.forEach(person => {// 处理每个人员对象
    });
    

2. DOM操作 vs document.write()

document.write()虽然简单,但有明显缺点:

  • 会覆盖整个文档(如果在页面加载完成后使用)
  • 不利于代码组织和维护
  • 无法精确控制元素位置和样式

推荐使用DOM操作方法:

  • document.createElement():创建新元素
  • element.appendChild():添加子元素
  • element.textContent:设置元素文本内容

3. 数据类型注意事项

原始代码中编号007会被解析为数字7,因为JavaScript会自动忽略数字的前导零。解决方法:

  • 将编号定义为字符串类型(如'007'
  • 如需数字类型,可在展示时格式化:
    // 将数字格式化为3位,不足补零
    function formatNumber(num) {return num.toString().padStart(3, '0');
    }
    

拓展与实践

基于这个案例,你可以尝试以下拓展练习:

  1. 添加数据筛选功能:实现按年龄筛选人员的功能
  2. 添加排序功能:实现按编号或年龄排序
  3. 添加新增/删除功能:允许动态添加或删除人员信息
  4. 实现分页:当数据量较大时,分页展示数据
  5. 添加搜索功能:根据姓名模糊搜索人员

这些拓展将帮助你更深入地理解JavaScript数组操作、DOM manipulation和事件处理等核心前端技能。

总结

本文通过一个人员信息展示的案例,详细讲解了JavaScript中数组对象的遍历方法和数据展示技巧。我们从基础实现出发,逐步优化代码,最终实现了一个既美观又实用的数据展示页面。

核心要点回顾:

  • 选择合适的遍历方式处理数组和对象
  • 优先使用DOM操作替代document.write()
  • 注意数据类型对展示效果的影响
  • 合理运用CSS样式提升页面美观度
  • 代码组织应注重可读性和可维护性

掌握这些基础技能,将为你处理更复杂的前端数据展示需求打下坚实基础。

http://www.xdnf.cn/news/1392679.html

相关文章:

  • 微功耗遥测终端机在城市管网压力/流量监测中的应用
  • 打造企业内部的“技术桥梁”:超级用户机制如何助力制造企业高效运维
  • 【数据分享】省级人工智能发展水平综合指标体系(2011-2022)
  • 【LeetCode】动态规划——72.编辑距离、10.正则表达式匹配
  • ros2---位姿转换--eigen/tf2
  • 如何在mysql中执行创建数据库的脚本文件?
  • 企业级数据库管理实战(三):数据库性能监控与调优的实战方法
  • 学习笔记-Record类
  • 忆联参与制定消费级SSD团体标准正式出版! 以“高可靠”引领行业提质增效与用户体验升级
  • 联想打印机2268w安装
  • Ubuntu22.04系统安装Opencv,无法定位包libjasper-dev libdc1394-22-dev的解决办法
  • 微信小程序调用蓝牙打印机教程(TSPL命令)
  • 死锁检测 及其测试用例
  • 地铁隧道病害智能巡检系统——机器视觉技术的深度应用
  • Idea2025.2 MybatisX插件失效问题
  • vue3+wangEditor实现富文本编辑器
  • cursor的setting設置換行
  • 命令拓展(草稿)
  • Vue开发准备
  • Silvaco TCAD | Victory DoE的基本使用方法(三)
  • nacos单机部署并开启鉴权
  • 2025.8.29机械臂实战项目
  • Windows 下 MSYS2 + MinGW-w64 配置 Fyne GUI 编译环境全流程
  • Redis-分布式缓存
  • Java深拷贝与浅拷贝核心解析
  • 设计模式:装饰模式(Decorator Pattern)
  • Kubernetes 与 GitOps 的深度融合实践指南
  • 【3D入门-指标篇上】3D 网格重建评估指标详解与通俗比喻
  • 3D 数字孪生可视化技术在学校项目中的应用
  • “破译”的密钥/算法类型