json是种常用数据传输格式,js怎么解析json格式的数据呢,请参阅下面的代码:
[html] view plain copy print
<html>
<head>
<script type="text/javascript">
var data = '{"return_code":0,"return_message":"success","data":{"data":[{"id":"1","question":"公主令牌在哪交?"},{"id":"2","question":"公主护使有什么用?"},{"id":"3","question":"角斗场在哪?"},{"id":"4","question":"北部断层在哪?"},{"id":"5","question":"欢乐令有什么用?"},{"id":"6","question":"令牌积分有什么用?"},{"id":"7","question":"南部断层在哪?"},{"id":"8","question":"大妖魔令牌交给谁?"},{"id":"9","question":"神工坊在哪?"},{"id":"10","question":"警戒妖珠有什么用?"}]}}';
function ShowData(){
var obj = eval("("+data+")");
alert("return_code:"+obj["return_code"]);
alert("return_message:"+obj["return_message"]);
alert("第一个问题id:" + obj["data"]["data"][0]["id"]);
alert("第一个内容id:" + obj["data"]["data"][0]["question"]);
}
</script>
</head>
<body onload="ShowData();">
{"return_code":0,"return_message":"success","data":{"data":[{"id":"1","question":"公主令牌在哪交?"},{"id":"2","question":"公主护使有什么用?"},{"id":"3","question":"角斗场在哪?"},{"id":"4","question":"北部断层在哪?"},{"id":"5","question":"欢乐令有什么用?"},{"id":"6","question":"令牌积分有什么用?"},{"id":"7","question":"南部断层在哪?"},{"id":"8","question":"大妖魔令牌交给谁?"},{"id":"9","question":"神工坊在哪?"},{"id":"10","question":"警戒妖珠有什么用?"}]}}
</body>
</html>
如果这个数组不是json的话,就可以for(var i=0;i <arraylength;i++{}来获取数组中的每一个对象,然后在{}里添加:
if(typeof array[i] == "object){
for(var key in array[i]){
//这里的array[i][key]就能遍历array数组里的对象的属性值了,key就是属性名,
}
}
如果最初的array也是个对象的话,就把for(var i=0;i <arraylength;i++{}改成for(var i in array){}就行了
obj['key'],点""
1 出现的bug,如果这个key的值是false,这里就会判断没有,或者value是undefined也一样
2 可以看到这俩都不行
3 如果对象上不存在改属性,则会返回undefined这种方式可以判断对象的自由属性和继承属性如果对象自身没有检测的属性,而原型链上有该属性,就会返回原型链上的属性值
1 返回一个布尔值,指示对象自身属性是否有指定的属性
2 原型链上的不会被访问到,和in不同,会忽略到从原型链上继承到的属性
3 即使属性的值是null,undefined,只要属性存在,hasOwnProperty依旧会返回true
4 注意:这个方法没有被保护,也就是说方法可以自定定义一个这样的方法,来让他的返回值永远是true或者false
1 !!('work' in obj)
2 如果指定的属性在指定的对象或其原型链中,则in 运算符返回true
3 使用delete删除的属性返回false
4 值为undefined的属性是可以的
1 和in方法完全一样,但是第一个参数不是对象会报错
2 这个方法更加形象
3 原型链上的方法同样可以会返回true
1 判断指定名称的属性是否为实例属性并且是可枚举的
2
1 也就是说,判断自身属性的时候用除了in的所有方法,判断继承属性使用in
2
js中判断字典中是否有key步骤如下:
1,打开JUDYTER NOTEBOOK并创建一个新的PY文档。
2,d = {}首先创建一个空白字典。
3,d [“Peter”] = 180,print(d),字典的键可以用字符串定义。
4,d [10] =“10”,print(d),字典的键可以用整数定义。
5,d [888] =“888”,print(d)字典的键可以由浮点类型定义。
6,d [True] = 123print(d)d [False] = 321,print(d),字典的键可以由TRUE或FALSE定义。
7,d [{1:8}] = 9,print(d),字典键不能由字典定义。
var key = "name";
var val = "aaa";
var o = {};
str = "o"+key+"='"+val+"'";
eval(str);
alert(oname);
如果是使用了 JQ EXTJS 的话本身就有 对象克隆的 函数库可以使用 如 extjs 使用
extuxutilclone()
没有用这些的话 可以自己写一个 克隆函数 网上有资源 比如
function deepClone(obj){ var result={},oClass=isClass(obj);// if(oClass==="Object"){
// result={};
// }else if(oClass==="Array"){
// result=[];
// }else{
// return obj;
// }
for(key in obj){
var copy=obj[key];
if(isClass(copy)=="Object"){
result[key]=argumentscallee(copy);
}else if(isClass(copy)=="Array"){
result[key]=argumentscallee(copy);
}else{
result[key]=obj[key];
}
}
return result;
}
function isClass(o){
if(o===null) return "Null";
if(o===undefined) return "Undefined";
return ObjectprototypetoStringcall(o)slice(8,-1);
}
或者参考 extjs 的方法
function(o) {if(!o || 'object' !== typeof o) { return o; }
if('function' === typeof oclone) { return oclone(); }
var c = '[object array]' === objectprototypetostringcall(o) [] : {};
var p, v;
for(p in o) {
if(ohasownproperty(p)) { v = o[p];
if(v && 'object' === typeof v) {
c[p] = extuxutilclone(v);
} else {
c[p] = v;
}
}
}
return c;};
以上就是关于js一个对象数组,如何在不知道KEY的情况下取到值全部的内容,包括:js一个对象数组,如何在不知道KEY的情况下取到值、怎么获取js 数组中的对象的属性、js判断对象中是否有某个key等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)