平时做项目时,我们经常会遇到需要遍历json对象的情况,如果是知道层级的话还好搞一点,如果层级是没办法固定的话就不能用一般的遍历方法了,然后我今天使用到了递归,考虑到以后也可能会经常用到所以记录一下,使用后感觉用好了的话对各种动态操作还是很有帮助的;
首先我们创建一个json对象
var data = {
"root": "青青草原",
"items": [{
"羊村": [{
"母羊": ["美羊羊", "暖羊羊"]
},
{
"公羊": [{
"小羊": ["喜羊羊", "懒羊羊", "沸羊羊"]
}, {
"老羊": ["慢羊羊", "刀羊"],
}]
}
]
},
{
"狼堡": ["灰太狼", "红太狼"]
},
"泰哥",
"蕉太狼"
]
}
我们主要是遍历items里的东西,接下来就是代码了,操作很简单
function traverse(data) {
var aa = {}//用来接收操作完的数据
for (key in data) {
//这里判断条件,如果是对象类型说明还有下一层,
if (typeof(data[key]) == 'object') {
//因为还有下一层对象,所以再循环一道先把‘键’建好
for (i in data[key]) {
//这里进行自调,直到没有了对象层级才会停下来
aa[i] = traverse(data[key][i])
}
} else if (typeof(data[key]) == 'string') {
aa[data[key]] = null//这里没有下一层所以直接处理后添加进aa
}
}
return aa//这里将处理完的数据返回出去
}
//使用方法
var abc=traverse(data)//接收处理好的数据
console.log(abc)//打印出来看看能不能用
仅供参考,希望大家可以举一反三,都早日成为技术大佬。