使用脚本类型从JSON的嵌套对象中的子对象获取父对象
是否可以从子对象动态获取父对象?本质上,我所要做的就是动态检索属于子对象父对象的属性的值。例如,在下面的Json中,我想提取特定汽车的驾驶员:使用脚本类型从JSON的嵌套对象中的子对象获取父对象,json,angular,typescript,tree,Json,Angular,Typescript,Tree,是否可以从子对象动态获取父对象?本质上,我所要做的就是动态检索属于子对象父对象的属性的值。例如,在下面的Json中,我想提取特定汽车的驾驶员: { "driver": [ { "id": 1, | "name": "Bob", |=> this is the parent "age": "34", |
{
"driver": [
{
"id": 1, |
"name": "Bob", |=> this is the parent
"age": "34", |
"car": [
{
"make": "BMW", |
"model": "3.20", | this is the child
"colour": "Silver",|
"mileage": [
{
"total": "350523",
"year": [
{
"2011": "3535",
"2012": "7852",
"2013": "8045"
}
],
"month": [
{
"december": "966",
"november": "546",
"october": "7657"
}
]
}
]
}
]
}
]
}
无论您选择什么策略,您基本上都会迭代并返回。所以我觉得最好的策略是使用你最熟悉的东西 Typescript只是Javascript。因此,如果您对Javascript ey函数式编程方式感到满意,那么可以使用数组映射和过滤器 当然,您必须处理您没有指定的特定于应用程序的逻辑,就像在不同的驱动程序之间存在相同的品牌/型号时发生的情况一样 如果您对函数式编程不熟悉,您可以构建一系列映射,然后执行查找 但如果您需要正确操作,请始终做您喜欢做的事情。使用for循环:
for(let parent of data.driver) {
for(let car of parent.car) {
if(car.make === 'BMW') {
// can do what you like with 'parent'
}
}
}
使用过滤器或查找标准javascript:
drivers_who_drive_bwm = data.driver.filter((parent) => {
// find() will give -1, if no car was found that matched
// car.make === 'BWM'
return parent['car'].find((car) => car.make === 'BWM') !== -1
})
此外:
您的命名约定令人困惑。我希望driver.car是一辆车,在你的代码中是一组车。如果它总是包含一辆车,那么最好不要使用数组。司机也一样。更好的键应该是。drivers来指示多个驱动程序。但也许它是XML转换成json的,在这种情况下,您会被它卡住吗?要回答这个问题,对象引用只是一个内存位置。这里没有父母的概念。它可能没有任何父对象,只是作为父对象的逻辑思维,因此可能没有任何其他对象具有引用它的属性,或者可能有许多对象引用了相同的内存位置,即逻辑上的多个父对象 1> 因此,您可以通过编程将父引用放置到每个子元素。注意,这里您不能解析JSON字符串,因为它只包含JSON数据,不能作为可解析的引用
2> 或者根据您的条件,尝试找出驱动程序对象,即父对象具有包含您的值的子对象。您可以使用javascript中的过滤器、数组函数映射来实现这一点。但不管你在做什么,都只是迭代和查找。在这种情况下,underscrore js将是一个很好的库,可以使用哪个是父,哪个是子。你到底在找什么?你能再检查一下这个问题吗??我澄清了您将如何获取父组件驱动程序信息。你在哪里使用它?你想找到使用子对象的父对象吗?是的,就是这样,我想找到使用子对象的父对象这就是我要找的,谢谢