关于遍历javascript 中的json串浏览器输出的结果不统一的情况

我们在做项目的时候经常会用到javascript的json。

首先说一下javascript的json串是什么,json串属于javascript的一个对象,有键和值对应的对象。

一般的格式是:

a = {

a1 : 1,

a2 : ‘abc‘,

a3 : ‘abc‘,

a4 : [1,2,3],

a5 : function(){console.log(12)}

};

我们读取这个json 的方法是通过for in 循环来遍历;

使用json串的好处是可以事先把数据库中的数据一次性的读取出来存成json的形式,然后通过javascript来读取里边的属于,这样可以大大减少对服务器的请求次数,增加了前台页面的加载效率 。

我们在遍历json的时候会遇到许多问题,我今天遇到的问题是在我们把json串的键值写成数字的情况下,在主流浏览器遍历的时候不会按照我们输出的json的结构先后输出,而是按照数字的从小到大顺序输出。但是ie8以下浏览器会按照我们输出的顺序输出。

例如:

a = {

‘1‘ : 1,

‘5‘ : function(){console.log(12)},

‘2‘ : ‘abc‘,

‘4‘ : [1,2,3],

‘3‘ : {‘5‘ : ‘abc‘, ‘6‘ : ‘bcd‘},

};

通过for in循环

for(var i in a){

console.log(a[i]);

}

chrome,firefox等浏览器输出:1,abc,Object { 5="abc", 6="bcd"},[1, 2, 3],function();

ie8以及以下浏览器:1,function(),abc[1, 2, 3],Object { 5="abc", 6="bcd"};

解决这样的问题有两种:

第一:就是把数字的键值改成字符串形式的包括字母或者下划线;

第二 :就是解决ie的兼容性,通过先遍历json然后把键值存入一个数组中,然后再通过数组排序来循环数组取json中的数据。

具体代码:

var arr = [],sortNumber = function (a,b){

return a - b;

};

for(var i in a){

arr[arr.length] = a[i];

}

arr.sort(sortNumber);

for(var x = 0; x < arr.length; x++) {

console.log(a[arr[x]]);

}

这样浏览器读取的数据就会保持一致了,有个缺点就是这个也不会按照我们输出的json格式输出,只是解决了浏览器的兼容问题。

时间: 2024-10-27 06:07:57

关于遍历javascript 中的json串浏览器输出的结果不统一的情况的相关文章

Java和JavaScript中使用Json方法大全

林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka   摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 它基于ECMAScript的一个子集. JSON採用全然独立于语言的文本格式,可是也使用了相似于C语言家族的习惯(包含C.C++.C#.Java.JavaScript.Perl.Python等).这些特性使JSON成为理想的数据交换语言. 易于人阅读和编写.同一时候也易于机器解析和生成

有关javascript中的JSON.parse和JSON.stringify的使用一二

有没有想过,当我们的大后台只是扮演一个数据库的角色,json在前后台的数据交换中扮演极其重要的角色时,作为依托node的前端开发,其实相当多的时间都是在处理数据,准确地说就是在处理逻辑和数据(这周实习最大的收获). 而对于依托json格式传输的数据,处理数据时,用到JSON.strinify和JSON.parse的概率是百分之百.使用这两个方法so easy,但是你真的知道其中一些相关的细节以及其中牵涉到的javascript的知识么? JSON.parse用于从一个字符串中解析出json对象.

小谈一下JavaScript中的JSON

一.JSON的语法可以表示以下三种类型的值: 1.简单值:字符串,数值,布尔值,null 比如:5,"你好",false,null JSON中字符串必须用双引号,而JS中则没有强制规定. 2.对象 比如: 1 { 2 "name":"蔡斌", 3 "age":21, 4 "isRich":false, 5 "school":{ 6 "name":"广东工业大

在Javascript 中创建JSON对象--例程分析

作者:iamlaosong 要想用程序从网页上抓数据,需要熟悉HTML和JavaScript语言,这里有一个在Javascript 中创建JSON对象的例程,学习并掌握其内容,在此对此例程做个注释,记录我掌握的知识,以备将来验证是否正确. 程序很简单,分三部分: 1.<h2>部分:用大字符显示标题: 2.<p>部分:显示一段信息的结构,但无内容,内容在后面添加: 3.<scrip>部分:Javascript程序,先定义了一个JSON结构的变量JSONObject,然后,

Javascript 中使用Json的四种途径

jQuery插件支持的转换方式: 复制代码代码如下: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2>浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器: 复制代码代码如下: JSON.parse(jsonstr); //可以将json字符串转换成json对象 JSON.stringify(jsonobj); //可以将json对象转换成json

在JavaScript中使用json.js:Ajax项目之GET请求(同步)

1.用php编写一个提供数据的响应程序(phpdata.php) <?php $arr=array(1,2,3,4); //将数组编码为JSON格式的数据 $jsonarr=json_encode($arr); //输出JSON格式的数据 echo $jsonarr; ?> 2.客户端(ajax.html) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w

javascript 中的json

摘要 写这篇主要是发现 javascript 中 json 和我理解中java 语言的map 存储是不同的. javascript 中 object 本质是 array, 存储进去的数据是堆栈,有顺序的概念 const value = {a: 1, b:1}; const value1 = {b:1, a:1}; value === value1 // false Object.keys(value) // [a, b] Object.keys(value1) // [b, a] 可以看出来va

在JavaScript中使用json.js:访问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"> <head> <script type="text/jav

javascript中new Date()的浏览器兼容性问题

引言: 同一种语言JavaScript,在不同的浏览器中,存在语言兼容性问题,本质上是由于不同的浏览器是支持的语言标准和实现上各有差异.本文将基于new Date来创建Date对象来分析这个问题. 1.  问题的提出, 开始时间和结束时间空间无法正确的传递值 在页面中,我们使用了一个时间上的组件来开发时间选择框,但是发现在Firefox下是无法正常工作的,在Chrome下是可以正常运行的. 问题出在哪里呢? 2.  问题分析 结果分析发现是由于如下代码产生的问题: [html] view pla