[{"a":
[{"b":
[{"c":"one"},{"d":"1"}]
}],
[{"b":
[{"c":"two"},{"d":"2"}]
}],
[{"b":
[{"c":"three"},{"d":"3"}]
}]
}]
取每个"c"的值,应该怎么遍历?
js遍历多层json
答案:2 悬赏:10 手机版
解决时间 2021-12-31 14:39
- 提问者网友:流星是天使的眼泪
- 2021-12-30 23:30
最佳答案
- 五星知识达人网友:持酒劝斜阳
- 2021-12-31 01:07
我看了下你的数据有问题,'a'的值放了3个数组,这肯定是错的,应该在3个数组外面套上一层[],正确的数据结构应该是这样的。
[
{"a":
[
[
{"b":
[{"c":"one"},{"d":"1"}]
}
],
[
{"b":
[{"c":"two"},{"d":"2"}]
}
],
[
{"b":
[{"c":"three"},{"d":"3"}]
}
]
]
}
]
遍历代码如下:
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i]['a'].length; j++) {
// 做你需要的操作对c值
console.log(arr[i]['a'][j][0]['b'][0]['c']);
}
}
如果还有问题请像我提问,前端相关资料。
[
{"a":
[
[
{"b":
[{"c":"one"},{"d":"1"}]
}
],
[
{"b":
[{"c":"two"},{"d":"2"}]
}
],
[
{"b":
[{"c":"three"},{"d":"3"}]
}
]
]
}
]
遍历代码如下:
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i]['a'].length; j++) {
// 做你需要的操作对c值
console.log(arr[i]['a'][j][0]['b'][0]['c']);
}
}
如果还有问题请像我提问,前端相关资料。
全部回答
- 1楼网友:患得患失的劫
- 2021-12-31 01:59
你这里的jsonstr本身就已经是对象了,而json只是字符串,也就是说对方传递过来的字符串而已。
应该写成
var jsonstr = "{qiyi:'mp4',tudou:'3gp',youku:'mp4'}";
这样可以表示jsonstr是一个字符串,而现在要jsonstr去执行一下就可以了!
如:
var c = eval(jsonstr);
然后就可以调用了!如c.qiyi等等。不过这里不太好理解的,eval就是将jsonstr字符串当指令执行了,将执行结果传递给c而已。换一句方式可能会更好的理解的!
eval(" var c = "+jsonstr+";");
也就是说重新组合一个语句,这样可以直接使用c.qiyi了!
但其实是一样的道理的,只不过很少人会用到第二种!因为如果eval没有顺利执行时,第二种会出现错误,而第一种则会出现undefined的结果,第一种与第二种的区别就是不管是否空值,第一种c对象是存在的!而第二种却未必见得!第二种方案下,执行了一个语句,然后就感觉“凭空”开始使用一个对象了!然后这样虽是不好,其中是说明下边的语句都依赖于eval这样的一个细节语句,所以不是很多的!
也就是说:
var c = eval("{qiyi:'mp4',tudou:'3gp',youku:'mp4'}");
就是将json执行后的结果。由此可以看出你对数据传递上还有些不理解的!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯