JS基础:JSON和它的for in遍历

  • json

一、对比数组与json写法

【案例】

如果数组:
var arrUrl=['img/1.png','img/2.png','img/3.png','img/4.png'];
var arrText=['宠物','图片二','图片三','面具'];
用json写:
var imgData ={
 utl:['img/1.png','img/2.png','img/3.png','img/4.png'],
 text:['宠物','图片二','图片三','面具'];
};
alert(imgData.url[2])//img/3.png

二、json写法中的''和.和[]

【案例】

var json2={name:'miaov'};
var json2={'name':'miaov'};
//都正确,只是下面name加了引号''后更为安全稳定

都正确,只是name加了引号后更为安全稳定

alert(json2.name);
alert(jason2['name'];
//上面的两种读取写法:.或者[]也都是正确的

写法:.或者[]也都是正确的

json2.name='abc';
json2['name']='ABC';
 //上面的两种改写方法也都正确

三、Jason可以包含数字,字符串,数组等;数组也可以包字符串

【案例】:

var json2={abc:123,xyz:''}
////{[],[],[]}   [{},{},{}]json可以包含数组,数组也可以包含json
var arr=[{'name':'TM','age':23},{'name':'leo','age':32}];
alert(arr[0].name+'今年有'+arr[1]['age']);
  • for in遍历

一、遍历与获取验证

【案例】

var json4 ={'name':'miaov','age':3,'fun':'前端开发'};
for(var attr in json4){

alert(attr);//name,age,fun
alert(json4[attr]);//miaov,3,前端开发
alert(json4['attr']);//undefined 加了引号是去找是否有attr属性
}

【注意】:alert(json4[attr])与alert(json4['attr'])不同

二、有数组时,for in与for的嵌套

【案例】

var json5={
 'url':['img/1.png','img/2.png','img/3.png','img/4.png'],
 'text':['宠物','图片二','图片三','面具'];
};
for(var attr in json5){
 for(var i=0;i<json5[attr].length;i++){
   alert(json5[attr][i]);//img1.png,img/2.png,...面具
 }
}

这说明for in循环可以嵌套for

var arr={[],[],[]}

反过来for循环也可以嵌套for in

var arr=[{},{},{}]

三、for in遍历对象属性

window下面有多少属性,及属性名对应的值:

<script>
var str="";
var num =0;
for(var attr in window){
  str +=num+ '.'+ attr + ':'+window[attr]+'<br/>';
  num++;
}
document.body.innerHTML=str;
</script>

四、json中可以用for吗?(不可以)数组可以用for in 吗?(可以)

var json={
 'url':['img/1.png','img/2.png','img/3.png','img/4.png'],
 'text':['宠物','图片二','图片三','面具'];
};
alert(json.length);//undefined说明json没有长度length概念
 for(var i=0;i<json.length;i++){

}
//上面都测试了json没有长度length概念,所以json不用for


var arr=['a','b','c'];
for(var i in attr){
 alert(i);//0,1,2
 alert(arr[i]);//a,b,c
所以for in可以用于数组
}

推荐阅读更多精彩内容