扫码关注官方订阅号
并且把对应的值全部放入一个数组中
我的思路是利用扁平化的思想,将复杂的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"}] // 后续就可以随意处理了
看看 lodash 库中有没有相关的 API
用递归方法,然后比较,属性相同时,push到数组中。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我的思路是利用扁平化的思想,将复杂的
JSON结构扁平化后,就可以很方便的寻找到相同属性了,只需要一层遍历就好,利用对象检测值是否相同,所以难点在于如何将JSON扁平化,这里提供一种方法看看 lodash 库中有没有相关的 API
用递归方法,然后比较,属性相同时,push到数组中。