как принимать значения массива в качестве пары ключ-значение в angular

#arrays #angular #multidimensional-array #webapi

#массивы #angular #многомерный массив #webapi

Вопрос:

Я новичок в 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.

Комментарии:

1. Если бы вы могли показать ожидаемый результат? запутался с добавлением суммы в третий массив

2. @AjeetEppakayala нужно взять все значения из массива B, которые совпадают в массиве A. сначала мне нужно, как это сделать. затем я приведу следующий

3. В Stackoverflow вы должны четко и сразу описать свои проблемы. Можете ли вы выполнить дополнительную часть после того, как это будет отсортировано?

4. @AjeetEppakayala есть ли способ получить доступ к вариантам из моего массива A выше?

5. конечно, есть.

Ответ №1:

 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, вы можете проанализировать json, а затем выполнить описанное выше.

проанализируйте JSON следующим образом

 JSON.parse(<strigifiedJSON>)
  

Ответ №2:

Я думаю, вы можете сначала сопоставить все идентификаторы вкусов из массива A с новым массивом. А затем массив filer B из отображенного Flavor массива.

Предполагая, что серверы — это массив A —

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


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

Затем вы можете использовать функцию reduce для filteredRam массива.