数据遍历 for-in
object 本身就是无对象的集合,因此在用 for-in 语句遍历对象的属性时,遍历出的属性顺序与对象定义时不同。
在开发中应尽量避免编写依赖对象属性顺序的代码。如下:  
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);
}
看看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数组遍历for与for in区别详解
js中遍历数组的有两种方式
代码如下:
var array = ['a']
//标准的for循环
for (var i = 1; i < array.length; i++) {
    alert(array[i])
}
//foreach循环
for (var i in array) {
    alert(array[i])
}
正常情况下上面两种遍历数组的方式结果一样。首先说两者的第一个区别
标准的for循环中的i是number类型,表示的是数组的下标,但是foreach循环中的i表示的是数组的key是string类型,因为js中一切皆为对象。
试试 alert(typeof i);这个区别是小问题。现在加上如下代码,上面的执行结果就不一样了。
代码如下:
//扩展了js原生的Array
Array.prototype.test=function(){
}
标准的for循环仍真正的对数组循环, 但此时foreach循环对刚才写的test方法写打印出来了。
这就是for与foreach遍历数组的最大区别,如果在项目采用的是用foreach遍历数组,假设谁不小心为了扩展js原生的Array类,或者引入一个外部的js框架也扩展了原生Array。那问题就来了。
建议