遍历js中对象的属性和值的实例


Posted in Javascript onNovember 21, 2016

今天优化项目时,遇到了关于”遍历js中对象的属性和值”的需求。之所以会有这个需求,是因为要做一个局部刷新表格内容的js插件。刚开始我去网上荡了一个js分页插件,但是智商实在捉急,搞了半天没搞出来!后来就怒了,干脆自己写一个好了。结果就遇到了这个问题!

问题:通过遍历属性名数组,获取对象的属性值失败

刚开始的错误代码如下:

for(var i=0;i<dataList.length;i++)
{
  var dataLine="<tr>";   
  for(var j=0;j<filedList.length;j++){
    dataLine+="<td>"+dataList[i].filedList[j]+"</td>"; 
  } 
  dataLine+="</tr>";
  $("#"+tableName).append(dataLine);
}

首先说一下,dataList里面放的是对象数组;filedList里面放的是对象的属性字段名数组。刚开始是这样想的,遍历dataList,每次都可以拿到一个对象,然后嵌套for循环,遍历filedList,每次拿到它的一个属性值,然后拼凑成表格。

比如:dataList[0]就是一个Emp对象,而Emp里面有id,name等属性。平常我们就可以通过dataList[0].id得到当前Emp对象的id值。但是如果遍历属性字段数组的话,就不能通过这种方式dataList[0].filedList[0]。这并不是说filedList[0]里面没有获取到值,因为我通过alert(filedList[0])已经得到了这个id值为1。那么为什么获取失败呢?因为它是去找Emp对象里面的一个叫做filedList[0]的属性了!Emp对象里面当然没有这个属性了,所以就理所应当的获取失败了,那么我们又该如何获取对象的属性值呢?

---------------------------------------------

解决方案:用“加强for循环”去遍历

正确代码如下:

for(var i=0;i<dataList.length;i++)
{
  var dataLine="<tr>";   
  for(var filedName in dataList[i]){
    dataLine+="<td>"+dataList[i][filedName]+"</td>"; 
  } 
  dataLine+="</tr>";
  $("#"+tableName).append(dataLine);
}

解决思路:既然dataList[i]是一个对象,那么我每次就可以拿到这个对象的属性名,然后通过dataList[i][filedName],即对象[属性名]的方式得到这个属性的属性值。

参考:JS获得一个对象的所有属性和方法

function displayProp(obj){  
  var names="";    
  for(var name in obj){    
    names+=name+": "+obj[name]+", "; 
  } 
  alert(names); 
}

由此看来,js的功能还是很强大的!

以上这篇遍历js中对象的属性和值的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于JavaScript 下namespace 功能的简单分析
Jul 05 Javascript
js验证电话号码与手机支持+86的正则表达式
Jan 23 Javascript
Javascript模拟加速运动与减速运动代码分享
Dec 11 Javascript
jQuery实现按键盘方向键翻页特效
Mar 18 Javascript
jQuery的ajax下载blob文件
Jul 21 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
Sep 12 Javascript
自动适应iframe右边的高度
Dec 22 Javascript
Vue2.x中的父组件传递数据至子组件的方法
May 01 Javascript
jQuery简单实现对数组去重及排序操作实例
Oct 31 jQuery
Vue组件通信的四种方式汇总
Feb 08 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
Aug 07 Javascript
浅析vue-router实现原理及两种模式
Feb 11 Javascript
JavaScript数据结构链表知识详解
Nov 21 #Javascript
jQuery简单自定义图片轮播插件及用法示例
Nov 21 #Javascript
Node.js测试中的Mock文件系统详解
Nov 21 #Javascript
JavaScript中boolean类型之三种情景实例代码
Nov 21 #Javascript
基于jQuery实现Tabs选项卡自定义插件
Nov 21 #Javascript
基于jQuery实现Accordion手风琴自定义插件
Oct 13 #Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
Nov 21 #Javascript
You might like
PHP生成sitemap.xml地图函数
2013/11/13 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
PHP递归创建多级目录
2015/11/05 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
javascript实现二分查找法实现代码
2007/11/12 Javascript
一个js写的日历(代码部分网摘)
2009/09/20 Javascript
jQuery总体架构的理解分析
2011/03/07 Javascript
动态加载JS文件的三种方法
2013/11/08 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
jquery实现简单手风琴菜单效果实例
2015/06/13 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
命令行批量截图Node脚本示例代码
2019/01/25 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
Python模块学习 filecmp 文件比较
2012/08/27 Python
Python中import导入上一级目录模块及循环import问题的解决
2016/06/04 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
python 自动重连wifi windows的方法
2018/12/18 Python
django之自定义软删除Model的方法
2019/08/14 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
Python如何输出整数
2020/06/07 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
学校推普周活动总结
2015/05/07 职场文书
微信搭讪开场白
2015/05/28 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
python基础详解之if循环语句
2021/04/24 Python
SQL Server内存机制浅探
2022/04/06 SQL Server
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS