javascript for-in有序遍历json数据并探讨各个浏览器差异

 更新时间:2015年11月30日 11:41:28   转载 投稿:mrr  
这篇文章主要介绍了javascript for-in有序遍历json数据并探讨各个浏览器差异的相关资料,需要的朋友可以参考下

object本身就是无对象的集合,因此在用 for-in 语句遍历对象的属性时,遍历出的属性顺序与对象定义时不同。

了解W3C标准:

根据 ECMA-262(ECMAScript)第三版中描述,for-in 语句的属性遍历的顺序是由对象定义时属性的书写顺序决定的。

关于 ECMA-262(ECMAScript)第三版中 for-in 语句的更多信息,请参考 ECMA-262 3rd Edition 中 12.6.4 The for-in Statement。

在现有最新的 ECMA-262(ECMAScript)第五版规范中,对 for-in 语句的遍历机制又做了调整,属性遍历的顺序是没有被规定的。

关于 ECMA-262(ECMAScript)第五版中 for-in 语句的更多信息,请参考 ECMA-262 5rd Edition 中 12.6.4 The for-in Statement。

新版本中的属性遍历顺序说明与早期版本不同,这将导致遵循 ECMA-262 第三版规范内容实现的 JavaScript 解析引擎在处理 for-in 语句时,与遵循第五版规范实现的解析引擎,对属性的遍历顺序存在不一致的问题。

 因此在开发中应尽量避免编写依赖对象属性顺序的代码。如下:

<script>
var json1 = {
    "2":{"name":"第1条"},
    "1":{"name":"第2条"},
    "3":{"name":"第3条"}
}
var json2 = [
    {"name":"第1条"},
    {"name":"第2条"},
    {"name":"第3条"}
]
for(var i in json1){
    alert(json1[i].name);
}
//正确
for(var i in json2){
    alert(json2[i].name);
}
</script>

看看for-in代码在个浏览器差异:

下面通过一段代码单独给大家介绍JS 循环遍历JSON数据

JSON数据如:

{"options":"[{/"text/":/"王家湾/",/"value/":/"9/"},{/"text/":/"李家湾/",/"valu
e/":/"10/"},{/"text/":/"邵家湾/",/"value/":/"13/"}]"}

用js可以写成:

var data=[{name:"a",age:12},{name:"b",age:11},{name:"c",age:13},{name:"d",age:14}]; 
   for(var o in data){ 
    alert(o); 
    alert(data[o]); 
    alert("text:"+data[o].name+" value:"+data[o].age ); 
   } 

或是

<script type="text/javascript"> 
function text(){ 
 var json = {"options":"[{/"text/":/"王家湾/",/"value/":/"9/"},{/"text/":/"李家湾/",/"value/":/"10/"},{/"text/":/"邵家湾/",/"value/":/"13/"}]"}  
 json = eval(json.options) 
 for(var i=0; i<json.length; i++) 
 { 
   alert(json[i].text+" " + json[i].value) 
 } 
} 
</script> 

相关文章

  • 浅谈js中的闭包

    浅谈js中的闭包

    闭包是一个比较抽象的概念,尤其是对js新手来说.书上的解释实在是比较晦涩,对我来说也是一样.闭包是很多语言都具备的特性,在js中,闭包主要涉及到js的几个其他的特性:作用域链,垃圾(内存)回收机制,函数嵌套,等等.
    2015-03-03
  • php显示当前文件所在的文件以及文件夹所有文件以树形展开

    php显示当前文件所在的文件以及文件夹所有文件以树形展开

    本文为大家介绍喜爱php如何显示当前文件所在的文件以及文件夹所有文件并以树形展开,感兴趣的朋友可以参考下
    2013-12-12
  • Js base64 加密解密介绍

    Js base64 加密解密介绍

    想必大家对base64并不陌生吧,在本文将为大家介绍下Js中的base64加密解密过程,感兴趣的朋友不要错过
    2013-10-10
  • JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法

    JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法

    这篇文章主要介绍了JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法,涉及JS递归算法操作数组实现排序功能的相关技巧,需要的朋友可以参考下
    2017-01-01
  • template.js前端模板引擎使用详解

    template.js前端模板引擎使用详解

    本篇文章主要介绍了template.js前端模板引擎使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • js获取ip和地区

    js获取ip和地区

    本文主要介绍了js获取ip和地区的方法,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • javascript 动态加载 css 方法总结

    javascript 动态加载 css 方法总结

    有时候我们在设计网页的时候想动态的加载css文件,并不是将css文件写死在页面中,这时就可以使用下面方法.
    2009-07-07
  • 用JS实现一个简单的打砖块游戏

    用JS实现一个简单的打砖块游戏

    这篇文章主要介绍了用JS实现一个简单的打砖块游戏,代码分为html+css+js三部分,具体实例代码感兴趣的朋友跟随小编一起看看吧
    2019-12-12
  • JS实现简易留言板特效

    JS实现简易留言板特效

    这篇文章主要为大家详细介绍了JS实现简易留言板特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • JS模板实现方法

    JS模板实现方法

    我们在使用JS渲染DOM时,一般使用字符串创建DOM然后附加到父元素上,如果附加的DOM是动态易变的,那需要在函数中写大量逻辑。如果在控件实现过程中,这带来的问题更为严重。
    2013-04-04

最新评论