如何在 angular 中将数组值作为键值对

how to take array values as key value pair in angular

我是 api 的新手。我有两个数组让它成为 A 和 B,A 和 B 都包含 json 响应,

数组A有以下数据。

{
    "servers": [
        {
            
            "links": [
                {
                    "href": ,
                    "rel": "self"
                },
                {
                    "href": ",
                    "rel": "bookmark"
                }
            ],           
                      "rel": "bookmark"
                    }
                ]
            },
            "OS-EXte": "active",
            "OS-TR:instance_name": "instance-000",
            "OS-SRV-Uched_at": "20200",
            "flavor": {
                "id": "fe183ca7-610f-4db4-934",
                "links": [
                    {
                        "href": 
                        "rel": "bookmark"
                    }
                ]
            },

等等,数组 B 有

{
    "flavors": [
        {
            "name": "ti",
            "links": [
                {
                    "href": "",
                    "rel": "self"
                },
         
            ],
            "ram": 8192,
            "OS-FLV-DISABLEse,
      
        },
        {

我需要从数组 A 中获取与数组 B 匹配的所有风味 ID。

我认为您可以先将数组 A 中的所有风味 ID 映射到新数组。 然后从映射 Flavor 数组 .

中过滤数组 B

假设服务器是数组 A -

let serverFlavor = servers.map(row => { row.flavor.id});


let filteredRam = flavors.filter(row => serverFlavor.find((a) => a == row.id));

然后你可以在 filteredRam 数组上使用 reduce 函数。

let servers = [{
  flavor: {
    id: "1",
    links: [{
      rel: "bookmark"
    }]
  }
}, {
  flavor: {
    id: "2",
    links: [{
      rel: "any"
    }]
  }
}]

let flavors = [{
  name: "ti",
  ram: 8192,
  id: "1"
}, {
  name: "ti",
  ram: 8192,
  id: "2"
}, {
  name: "ti",
  ram: 8192,
  id: "3"
}]

let serverFlavors = servers.map(s => s.flavor.id)
let newArray = flavors.filter(f => serverFlavors.includes(f.id))
console.log(newArray)

如果你的数据是json,你可以parse the json然后再进行上面的操作

解析JSON喜欢

JSON.parse(<strigifiedJSON>)