遍历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 相关文章推荐
关于jQuery object and DOM element
Apr 15 Javascript
JS下拉框内容左右移动效果的具体实现
Jul 10 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
May 11 Javascript
用console.table()调试javascript
Sep 04 Javascript
JS实现简单的键盘打字的效果
Apr 24 Javascript
angular select 默认值设置方法
Jun 23 Javascript
JavaScript实现单例模式实例分享
Dec 22 Javascript
JS伪继承prototype实现方法示例
Jun 20 Javascript
详解Webpack-dev-server的proxy用法
Sep 08 Javascript
微信小程序实现留言功能
Oct 31 Javascript
layDate插件设置开始和结束时间
Nov 15 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
Feb 26 Vue.js
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 文本文章分页代码 按标记或长度(不涉及数据库)
2012/06/07 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
jCallout 轻松实现气泡提示功能
2013/09/22 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
JavaScript实现算术平方根算法-代码超简单
2015/09/11 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
2016/11/10 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
详解JS模块导入导出
2017/12/20 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
Vue组件全局注册实现警告框的实例详解
2018/06/11 Javascript
vue.js 实现点击展开收起动画效果
2018/07/07 Javascript
Vue通过provide inject实现组件通信
2020/09/03 Javascript
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
Python实现Dijkstra算法
2018/10/17 Python
python实现kmp算法的实例代码
2019/04/03 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
毕业生就业自荐信
2013/12/04 职场文书
自我评价200字分享
2013/12/17 职场文书
银行类自荐信
2014/02/04 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
硕士论文致谢范文
2015/05/14 职场文书
房贷收入证明范本
2015/06/12 职场文书
详解PHP服务器如何在有限的资源里最大提升并发能力
2021/05/25 PHP
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers