javascript - 遍历复杂的 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/
谢谢
解决方案
这将返回数据的所有元素,其中 target.data.name 等于 str 中的字符串:
const str = 'A';
const matches = data.filter(el => el.target.data.name === str);
推荐阅读
- javascript - 从 DB 获取返回 [object Object] 而不是 Vue JS 中的值
- java - 如何在 JAVA 中使用二维数组从用户那里获取多个输入?
- ios - **[Assert] UIKit 客户端错误:-[UIWindow setScreen:] 如果客户端采用 UIScene 生命周期,则不应调用
- javascript - 在自动完成中未找到结果时显示消息
- ios - dyld:库未加载:@rpath/MapboxMobileEvents.framework/MapboxMobileEvents
- linux - Liberty Profile - 在 Linux 中出现错误 [无法启动新的 UOW。LocalTransactionContainment 已经在工作中处于活动状态]
- java - Spring Boot - 发送短信的调度程序
- java - 管理字符串的有效方法
- mysql - Redmine 中的间歇性 500 内部服务器错误
- ms-access - 'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机 Office 365 上注册