我的思路是利用扁平化的思想,将复杂的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"}] // 后续就可以随意处理了
我的思路是利用扁平化的思想,将复杂的
JSON
结构扁平化后,就可以很方便的寻找到相同属性了,只需要一层遍历就好,利用对象检测值是否相同,所以难点在于如何将JSON
扁平化,这里提供一种方法