也可以通过 for 来循环访问数组。
var myObj, i, x = "";myObj = {
"name":"网站",
"num":3,
"sites":[ "Google", "Runoob", "Taobao" ]
};
for (i = 0; i < myObj.sites.length; i++) {
x += myObj.sites[i] + "<br>";
}
javaScript 中的 for-in 类似于 Java 中的 foreach 。
修改数组元素
可以通过索引值来修改数组元素。
myObj.sites[1] = "Github";
删除数组元素
使用 delete 来删除数组元素
delete myObj.sites[1];这里需要注意 delete 并没有彻底删除元素,而是删除它的值,仍然会保留空间。运算符 delete 只是将该值设置为 undefined,而不会影响数组的长度。如果想要实现彻底删除,需要使用 splice() 方法。
var myObj, i, x = "";myObj = {
"name":"网站",
"num":3,
"sites":[ "Google", "Runoob", "Taobao" ]
};
delete myObj.sites[1];
x = "sites.length = " + myObj.sites.length + "<br><br>";
for (i=0;i<myObj.sites.length;i++) {
console.log(i + ":" + myObj.sites[i]);
x += i + " " + myObj.sites[i] + "<br>";
}
document.getElementById("demo").innerHTML = x;
运行结果:
0:Google
1:undefined
2:Taobao
myObj.sites.splice(1,1);
运行结果:
0:Google
1:Taobao
JSON.parse()
JSON 通常与服务端交换数据,接收服务器传输的数据时一般是字符串,我们可以通过 JSON.parse() 方法将数据转换为 JavaScipt 对象。
具体使用
var obj = JSON.parse('{"name":"关注公众号:小李不秃","age":18,"money":null}');console.log(obj.name + ":" + obj.age + ":" + obj.money)
运行结果:关注公众号:小李不秃:18:null
JSON 存 Date 对象,需要将其转换为字符串,之后再将字符串转换为 Date 对象。
var text = '{ "name":"小李不秃", "initDate":"2020-1-17"}';var obj = JSON.parse(text, function (key, value) {
if (key == "initDate") {
return new Date(value);
} else {
return value;
}});
console.log(obj.name + ":" + obj.initDate);
运行结果:小李不秃:Fri Jan 17 2020 00:00:00 GMT+0800 (中国标准时间)
JSON.stringify()
JSON 在向服务端传输的数据一般是字符串,所以我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串。
具体使用
var obj = {"name":"xiaoli", "area":"china", "money":null};console.log(obj);
var myJSON = JSON.stringify(obj);
console.log(myJSON);
运行结果
eval对于服务器返回的 JSON 字符串,如果 jQuery 异步请求没做类型说明,或者以字符串方式接收,那么需要做一次对象化处理,方式不是太麻烦,就是将该字符串放于 eval() 中执行一次。这种方式也适合以普通 javascipt 方式获取 json 对象,以下举例说明:
var u = eval('('+user+')');为什么要 eval 这里要添加 ('('+user+')') 呢?