当前位置: 首页 > 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.dtcms.com/a/357293.html

相关文章:

  • 动态规划01背包
  • 解锁Libvio访问异常:从故障到修复的全攻略
  • 从“Where”到“Where + What”:语义多目标跟踪(SMOT)全面解读
  • C# 日志写入loki
  • 海外广告流量套利:为什么需要使用移动代理IP?
  • 接吻数问题:从球体堆叠到高维空间的数学奥秘
  • 告别K8s部署繁琐!用KubeOperator可视化一键搭建生产级集群
  • 玄机靶场 | 冰蝎3.0-jsp流量分析
  • ACID分别如何实现
  • Dockerfile实现java容器构建及项目重启(公网和内网)
  • SOME/IP-SD IPv4组播的通信参数由谁指定?
  • React学习教程,从入门到精通, ReactJS - 特性:初学者的指南(4)
  • C++链表双杰:list与forward_list
  • ElasticSearch对比Solr
  • Node.js 的流(Stream)是什么?有哪些类型?
  • DQL单表查询相关函数
  • STM32F2/F4系列单片机解密和芯片应用介绍
  • Ubuntu虚拟机磁盘空间扩展指南
  • AI视频安防,为幼儿园安全保驾护航
  • 基于 GPT-OSS 的成人自考口语评测 API 开发全记录
  • 深度解密SWAT模型:遥感快速建模、DEM/LU/气象数据不确定性、子流域/坡度划分、未来土地利用与气候变化情景模拟及措施效益评估
  • 龙巍:探究青铜器在木雕中的运用
  • VS Code C#调试完全指南
  • [AI人脸替换] docs | 环境部署指南 | 用户界面解析
  • 红色视频剪辑制作——走进广州农讲所:在红墙黄瓦间感悟初心与传承
  • “游戏手柄”线性霍尔传感器IC替代方案:赛卓SC470X
  • Instance Normalization(实例归一化)
  • Stage应用模型及状态存储
  • 【Android 16】Android W 的冻结机制内核分析
  • 车载以太网通信测试:牢筑车载网络的质量防线