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> 

相关文章

  • javascript 关于赋值、浅拷贝、深拷贝的个人理解

    javascript 关于赋值、浅拷贝、深拷贝的个人理解

    关于赋值、浅拷贝、深拷贝,以前也思考良久,很多时候都以为记住了,但是,我太难了。今天我特地写下笔记,希望可以完全掌握这个东西,也希望可以帮助到任何想对学习这个东西的同学
    2019-11-11
  • javascript字符串拆分成单个字符相加和不超过10,求最终值

    javascript字符串拆分成单个字符相加和不超过10,求最终值

    javascript字符串拆分成单个字符相加和不超过10,求最终值
    2008-09-09
  • 新版小程序登录授权的方法

    新版小程序登录授权的方法

    这篇文章主要介绍了新版小程序登录授权的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • 解析Javascript中难以理解的11个问题

    解析Javascript中难以理解的11个问题

    这篇文章主要是对Javascript中难以理解的11个问题进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • 最好用的Bootstrap fileinput.js文件上传组件

    最好用的Bootstrap fileinput.js文件上传组件

    这篇文章主要为大家详细介绍了最好用的Bootstrap fileinput.js文件上传组件的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 浅析javascript中的DOM

    浅析javascript中的DOM

    本文主要给大家简单介绍了是什么是DOM、动态操作DOM元素的方法、使用jsjs操作样式以及Form对象的简介,是个人对于javascript中的DOM的理解的总结,推荐给小伙伴们。
    2015-03-03
  • js实现登陆遮罩效果的方法

    js实现登陆遮罩效果的方法

    这篇文章主要介绍了js实现登陆遮罩效果的方法,涉及javascript操作页面元素样式的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • js遍历map javaScript遍历map的简单实现

    js遍历map javaScript遍历map的简单实现

    下面小编就为大家带来一篇js遍历map javaScript遍历map的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • js实现WebSocket 连接的示例代码

    js实现WebSocket 连接的示例代码

    本文主要介绍了js实现WebSocket 连接的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • JS判断指定dom元素是否在屏幕内的方法实例

    JS判断指定dom元素是否在屏幕内的方法实例

    做图片滚动加载的时候会判断图片是否在可视区域内,如果在就加载原地址图片,下面这篇文章就给大家介绍了利用JS判断指定dom元素是否在屏幕内的方法实例,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01

最新评论