遍历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 removeChild 使用注意事项
Apr 11 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
Feb 05 Javascript
Jquery获得控件值的三种方法总结
Feb 13 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
May 20 Javascript
微信小程序之小豆瓣图书实例
Nov 30 Javascript
利用JS实现简单的日期选择插件
Jan 23 Javascript
canvas雪花效果核心代码分享
Feb 19 Javascript
详解node child_process模块学习笔记
Jan 24 Javascript
如何获取vue单文件自身源码路径
May 06 Javascript
Vue项目环境搭建详细总结
Sep 26 Javascript
javaScript把其它类型转换为Number类型
Oct 13 Javascript
javascript事件循环event loop的简单模型解释与应用分析
Mar 14 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应用程序的七个习惯深入分析
2013/06/08 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
2019/10/17 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
在表单提交前进行验证的几种方式整理
2013/07/31 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
jquery实现清新实用的网页菜单效果
2015/08/28 Javascript
学习javascript的闭包,原型,和匿名函数之旅
2015/10/18 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
jQuery基于排序功能实现上移、下移的方法
2016/11/26 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
[59:26]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第二局
2016/02/28 DOTA
[57:53]Secret vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
使用Python制作微信跳一跳辅助
2018/01/31 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
通过python3实现投票功能代码实例
2019/09/26 Python
matplotlib绘制多个子图(subplot)的方法
2019/12/03 Python
pytorch实现查看当前学习率
2020/06/24 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
实习教师自我鉴定
2013/09/27 职场文书
国庆节文艺活动方案
2014/02/03 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
新年寄语大全
2014/04/12 职场文书
关于安全的演讲稿
2014/05/09 职场文书
社区平安建设汇报材料
2014/08/14 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
退休职工欢送会致辞
2015/08/01 职场文书
2016年国培心得体会及反思
2016/01/13 职场文书
教师听课学习心得体会
2016/01/15 职场文书
2016开学第一课心得体会
2016/01/23 职场文书