javascript - 怎么高效的去找层级深的JSON中名字相同的属性 ?
本文介绍了javascript - 怎么高效的去找层级深的JSON中名字相同的属性 ?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
并且把对应的值全部放入一个数组中
解决方案
我的思路是利用扁平化的思想,将复杂的JSON
结构扁平化后,就可以很方便的寻找到相同属性了,只需要一层遍历就好,利用对象检测值是否相同,所以难点在于如何将JSON
扁平化,这里提供一种方法
var a = {
name: 'dz',
obj: {
name: 'thx',
obj: {
age: 12,
obj: {
name: '3'
}
}
},
other: {
name: 'thx',
obj: {
age: 12,
obj: {
name: '3'
}
}
}
}
var objFlatten = function(obj) {
return Object.keys(obj).reduce(function(a, b) {
return a.concat(Object.prototype.toString.call(obj[b]) === '[object Object]' ? objFlatten(obj[b]): {[b]:obj[b]})
}, [])
}
objFlatten(a)
// [{"name":"dz"},{"name":"thx"},{"age":12},{"name":"3"},{"name":"thx"},{"age":12},{"name":"3"}]
// 后续就可以随意处理了
这篇关于javascript - 怎么高效的去找层级深的JSON中名字相同的属性 ?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文