Javascript 我有一个json数组对象,我必须比较大多数节点的子节点,并返回只有该特定子节点的完整数组对象
上面提到的json数组对象就是我的全部 应该将所有子节点与“name”:“永恒火焰”进行比较,我应该得到满足该条件的子节点的输出Javascript 我有一个json数组对象,我必须比较大多数节点的子节点,并返回只有该特定子节点的完整数组对象,javascript,typescript,Javascript,Typescript,上面提到的json数组对象就是我的全部 应该将所有子节点与“name”:“永恒火焰”进行比较,我应该得到满足该条件的子节点的输出 const jsonArray = { "squadName": "Super hero squad", "homeTown": "Metro City", "formed": 2016, "secretBase": "Super tower", "active": true, "members": [
const jsonArray = {
"squadName": "Super hero squad",
"homeTown": "Metro City",
"formed": 2016,
"secretBase": "Super tower",
"active": true,
"members": [
{
"name": "Molecule Man",
"age": 29,
"secretIdentity": "Dan Jukes",
"powers": [
"Radiation resistance",
"Turning tiny",
"Radiation blast"
]
},
{
"name": "Madame Uppercut",
"age": 39,
"secretIdentity": "Jane Wilson",
"powers": [
"Million tonne punch",
"Damage resistance",
"Superhuman reflexes"
]
},
{
"name": "Eternal Flame",
"age": 1000000,
"secretIdentity": "Unknown",
"powers": [
"Immortality",
"Heat Immunity",
"Inferno",
"Teleportation",
"Interdimensional travel"
]
}
]
}
试图返回数据但不知道哪里出错,请帮助我提前感谢sin
`{
"squadName": "Super hero squad",
"homeTown": "Metro City",
"formed": 2016,
"secretBase": "Super tower",
"active": true,
"members": [
{
"name": "Eternal Flame",
"age": 1000000,
"secretIdentity": "Unknown",
"powers": [
"Immortality",
"Heat Immunity",
"Inferno",
"Teleportation",
"Interdimensional travel"
]
}
]
}`
首先,您的JSON结构无效(至少是您发布的结构) 我将假设
jsonArray
是一个团队的对象数据,包含成员,您正在搜索一个名为永恒火焰的成员(节点)
其次,您的代码将返回与成员数组长度相同的数组,除了匹配的节点外,该数组的所有位置都是null
。仅返回匹配节点(即成员)
假设每个成员的名称都是唯一的,则可以使用:
const newJson={
…jsonArray,
成员:[jsonArray.members.find(m=>m.name==“永恒的火焰”)]
}
这种方法首先在newJson
中引入jsonArray
的数据,然后将newJson
的members
属性设置为一个数组,该数组只包含您要查找的成员
如果名称不唯一,则可以使用:
const newJson={
…jsonArray,
成员:jsonArray.members.filter(m=>m.name==“永恒的火焰”)
}
对于您的数据,在这两种情况下,输出为:
jsonArray.members.filter(member => member.name === "Eternal Flame") [0]; // [0] Gets the first item of the matching array (Which should have a count of 1 anyway)
. 没有const jsonArray={},{},
是无效语法
jsonArray.members.filter(member => member.name === "Eternal Flame") [0]; // [0] Gets the first item of the matching array (Which should have a count of 1 anyway)
{
"squadName": "Super hero squad",
"homeTown": "Metro City",
"formed": 2016,
"secretBase": "Super tower",
"active": true,
"members": [
{
"name": "Eternal Flame",
"age": 1000000,
"secretIdentity": "Unknown",
"powers": [
"Immortality",
"Heat Immunity",
"Inferno",
"Teleportation",
"Interdimensional travel"
]
}
]
}