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> 
(0)

相关推荐

  • JS循环遍历JSON数据的方法

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

  • 通过Jquery遍历Json的两种数据结构的实现代码

    在ajax交互中,我们从服务器端返回的数据类型有xml,html,script,json,jsonp,text,本文以json为例,讲述了在前台如何利用jquery遍历json的两种数据结构:"名称/值"对的集合,值的有序列表,以及值的有序列表里面包含"名称/值"对的集合,在服务器端,我们采用的Json.NET来序列化arraylist,hashTable,list<>等数据结构. 在开始之前,我们需要下载Json.net,下载完成后,在网站中添加引用,

  • JQuery遍历json数组的3种方法

    一.使用each遍历 复制代码 代码如下: $(function () { var tbody = "";            //------------遍历对象 .each的使用-------------            //对象语法JSON数据格式(当服务器端回调回来的对象数据格式是json数据格式,必须保证JSON的格式要求,回调的对象必须使用eval函数进行转化(否则将得不到Object).本文不作详细介绍服务器端回调的数据问题,我们将直接自定义对象)        

  • jQuery 遍历json数组的实现代码

    复制代码 代码如下: <script type="text/javascript"> var d1 =[{"text":"王家湾","value":"9"},{"text":"李家湾","value":"10"},{"text":"邵家湾","value":

  • Javascript Jquery 遍历Json的实现代码

    复制代码 代码如下: /* author: liulf function: var __db_cpcj=vCpcj; var __db_cp=vCp; var vCp={"cppage":[ {"cpdh":"A01000101","page":"1","ca":"1309-36-0","mc":"硫铁矿","enam

  • JS简单循环遍历json数组的方法

    本文实例讲述了JS简单循环遍历json数组的方法.分享给大家供大家参考,具体如下: 例如数据库里面的json字符串是这样的 var str = '[{"name":"宗2瓜","num":"1","price":"122"},{"name":"宗呱呱","num":"1","price":

  • jQuery遍历json中多个map的方法

    本文实例讲述了jQuery遍历json中多个map的方法.分享给大家供大家参考.具体实现方法如下: jQuery.each(data.root,function(key,value){ for(var i = 0 ; i < value.length; i++ ){ var tmpArr = []; var obj = value[i]; //tmpArr.push(obj["collectDate"]); tmpArr.push(3*i); tmpArr.push(obj[&q

  • jQuery使用$.each遍历json数组的简单实现方法

    本文实例讲述了jQuery使用$.each遍历json数组的简单实现方法.分享给大家供大家参考,具体如下: <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&quo

  • js 遍历json返回的map内容示例代码

    复制代码 代码如下: var yData = [];//Y轴数据 var xData = [];//X轴数据 $(data.rows).each(function(i){ var obj = data.rows[i]; // alert(obj.key); // alert(obj.value); yData.push(obj.key); //动态取值 xData.push(obj.value); //动态取值 });

  • 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(EC

  • Jquery遍历Json数据的方法

    本文实例讲述了Jquery遍历Json数据的方法.分享给大家供大家参考.具体如下: <html> <head> <title>jQuery遍历json</title> <script src="js/jquery-1.5.2.min.js" type="text/javascript"></script> </head> <script> var a = { "

  • Golang map如何生成有序的json数据详解

    前言 本文主要给大家介绍了关于Golang map生成有序json数据的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 先来看一段 Golang 生成 json 的代码,首先定义了一个 map[string]interface{}  的变量,然后存一些值,这里要注意的是 previews 字段,为了浏览器获取到的 json 数据是有序的,所以定义了一个 map[int]map[string]string 的类型,加上了一个表示顺序的键: list := make(map[strin

  • javascript表单域与json数据间的交互第1/3页

    包括对象中有集合属性.对象中引用其他对象属性: 复制代码 代码如下: /** **json对象数据设置到表单域中 */ function jsonObjectToForm(form, jsonObject){     for(i = 0, max = form.elements.length; i < max; i++) {         e = form.elements[i];         eName = e.name;         if(eName.indexOf('.') >

  • javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异

    在您开始本文的阅读前,我强烈建议您可以先读一读此篇:http://w3help.org/zh-cn/causes/SD9004.            HTMLCollection 接口定义 interface HTMLCollection{      readonly attribute unsigned long   length;      Node               item(in unsigned long index);      Node               na

  • 直接在JS里创建JSON数据然后遍历使用

    之前我已经有讲过后台返回json数据到前台,并在前台遍历json数据. 这里讲下直接在JS里创建JSON数据,然后遍历使用~ 创建代码如下:(创建的是JSON对象) var YearSelect = {}; var Year = 2014; var DateOption; for (var i = Year; i < Year + 12; i++) { DateOption = {'Year':i, 'Month':i-Year+1}; / alert(DateOption.Year) Year

  • 利用jQuery解析获取JSON数据

    JSON 是一种比较方便的数据形式,下面使用$.getJSON方法,实现获得JSON数据和解析,都挺方便简单的.从http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=? 这个地址得到JSON数据 并且分析里面的结构,生成图片和相关链接等: 复制代码 $(function(){ var url="http://api.flic

  • Java后台返回和处理JSon数据的方法步骤

    1.下载JsonObject相关jar包 在这里,我们使用JsonObject来将Java类型数据转换成Json类型,首先要下载该库相关的jar包,下载地址如下: https://www.jb51.net/softs/615024.html 2.JsonObject的使用代码示例 JSONObject jsonObject = new JSONObject(); //创建Json对象 jsonObject.put("username", "张三"); //设置Jso

  • Javascript中JSON数据分组优化实践及JS操作JSON总结

    现有一堆数据,我需要按时间进行分组,以便前端视图呈现 [ {"date":"2017-12-22","start_time":"10:00:00","end_time":"10:00:00","status":"Performance Time"}, {"date":"2017-12-22","st

随机推荐