javascript - 怎么高效的去找层级深的JSON中名字相同的属性 ?

查看:67
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆