javascript - 怎么高效的去找层级深的JSON中名字相同的属性 ?
巴扎黑
巴扎黑 2017-04-11 12:09:35
[JavaScript讨论组]

并且把对应的值全部放入一个数组中

巴扎黑
巴扎黑

全部回复(3)
迷茫

我的思路是利用扁平化的思想,将复杂的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中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号