Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我有一个json数组对象,我必须比较大多数节点的子节点,并返回只有该特定子节点的完整数组对象_Javascript_Typescript - Fatal编程技术网

Javascript 我有一个json数组对象,我必须比较大多数节点的子节点,并返回只有该特定子节点的完整数组对象

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": [

上面提到的json数组对象就是我的全部

应该将所有子节点与“name”:“永恒火焰”进行比较,我应该得到满足该条件的子节点的输出

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"
         ]
      }
   ]
}