json Node js:获取对象数组中key的所有值

slsn1g29  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(75)

我有一个看起来像这样的数据(经过消毒)。这是从Azure人工制品馈送到响应数组的axios输出

{
  "value": [
    {
      "normalizedName": "@test",
      "name": "@test",
      "versions": [
        {
          "normalizedVersion": "1.2.6",
          "version": "1.2.6",
        }
      ],
    },
    {
      "normalizedName": "@test2",
      "name": "@test2",
      "versions": [
        {
          "normalizedVersion": "4.0.1",
          "version": "4.0.1",
        }
      ],
    },
    {
      "normalizedName": "@test3",
      "name": "@test3",
      "versions": [
        {
          "normalizedVersion": "2.2.0",
          "version": "2.2.0",
        }
      ],
    },
  ]
}

字符串
我需要得到每个项目的normalizedNamenormalizedVersion
eg

[ '@test','1.2.6' ]
[ '@test2','4.0.1' ]
[ '@test3','2.2.0' ]



我试过这个方法,但不明白如何从项目0到项目1等等。我不确定是否需要创建一个循环计数器,并把它们都放进一个循环,但似乎混乱。

for (var key in response.data.value[0]) {

  if (key === 'normalizedName') {
    // console.log(response.data.value[0][key]);
    verList.push(response.data.value[0][key]);
  }

}
for (var key in response.data.value[0].versions[0]) {

  if (key === 'normalizedVersion') {
    // console.log(response.data.value[0].versions[0][key]);

    verList.push(response.data.value[0].versions[0][key]);
  }
}


我的输出是这样的:

[ '@test', '1.2.6' ]


我已经尝试了其他方法,得到了相同的结果,但只是不能让它通过完整的JSON对象/主体,并拉出所有的版本。
感谢任何帮助。

sbtkgmzw

sbtkgmzw1#

这段JavaScript代码定义了一个对象res,该对象具有名为“value”的属性,该属性是一个对象数组。数组中的每个对象都表示一个包,该包具有“normalizedName”、“name”和“versions”等属性。“versions”属性是一个数组,其中包含一个具有版本信息的对象。
然后,代码使用console.log输出一个数组数组。每个内部数组包含从“value”数组中的每个对象提取的软件包名称(value.name)和相应的版本(value.versions[0].version)。这是通过使用map函数遍历数组并为每个软件包创建指定值的新数组来实现的。

const res = {
  "value": [
    {
      "normalizedName": "@test",
      "name": "@test",
      "versions": [
        {
          "normalizedVersion": "1.2.6",
          "version": "1.2.6",
        }
      ],
    },
    {
      "normalizedName": "@test2",
      "name": "@test2",
      "versions": [
        {
          "normalizedVersion": "4.0.1",
          "version": "4.0.1",
        }
      ],
    },
    {
      "normalizedName": "@test3",
      "name": "@test3",
      "versions": [
        {
          "normalizedVersion": "2.2.0",
          "version": "2.2.0",
        }
      ],
    },
  ]
}

console.log(res.value.map(value => [value.name, value.versions[0].version]))

字符串

n3schb8v

n3schb8v2#

您可以使用reducemap来获得所需的结果:

const res = {
  "value": [
    {
      "normalizedName": "@test",
      "name": "@test",
      "versions": [
        {
          "normalizedVersion": "1.2.6",
          "version": "1.2.6",
        }
      ],
    },
    {
      "normalizedName": "@test2",
      "name": "@test2",
      "versions": [
        {
          "normalizedVersion": "4.0.1",
          "version": "4.0.1",
        }
      ],
    },
    {
      "normalizedName": "@test3",
      "name": "@test3",
      "versions": [
        {
          "normalizedVersion": "2.2.0",
          "version": "2.2.0",
        }
      ],
    },
  ]
}

console.log('res', res.value.reduce((acc, next) => { acc.push(...next.versions.map(v => [next.normalizedName, v.normalizedVersion])); return acc }, []))

字符串

相关问题