首页 > 解决方案 > 遍历复杂的 JSON 以查找匹配并返回关联的数据

问题描述

我有一个复杂的 JSON 设置如下:

var data = [
{
    "source": {
            "data":[
                {"name":"A", "type":"main"}
            ]
    },
    "target": {
            "data":[
                {"name":"B", "type":"tech"}
            ]
    }
},
{
    "source": {
            "data":[
                {"name":"B", "type":"tech"}
            ]
    },
    "target": {
            "data":[
                {"name":"C", "type":"software engineer"}
            ]
    }
},
{
    "source": {
            "data":[
                {"name":"B", "type":"tech"}
            ]
    },
    "target": {
            "data":[
                {"name":"D", "type":"systems engineer"}
            ]
    }
}
]

基本上,每个条目都设置了一个“源”和一个“目标”。每个源和目标都有一个解释节点详细信息的“数据”部分,以及有关连接节点(“父”和“子”)的信息。

对于我的问题,我希望能够遍历更大的 JSON,并在“目标”下找到名称匹配并根据需要返回所有相邻信息,例如 data[i].target.data.name)。

关于如何实现这一点的想法?我认为它应该像使用过滤器一样简单,但我遇到了一些麻烦。

检查此 JSFiddle 上的控制台以获取完整输出:https ://jsfiddle.net/KateJean/7o3suadx/

谢谢

标签: javascriptloopsfilter

解决方案


这将返回数据的所有元素,其中 target.data.name 等于 str 中的字符串:

const str = 'A';
const matches = data.filter(el => el.target.data.name === str);

推荐阅读