#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
массива.