Создать структуру JSON для пар ключ-значение, где ключи меняются для каждого элемента?

1

Я использую SweetAlert2, и мне нужно создать параметры, которые будут заполнены в поле выбора для этого. Однако я знаю, что я могу использовать поле "inputOptions" для этого, и я посмотрел их пример (со своего сайта) ниже:

inputOptions: {
  'SRB': 'Serbia',
  'UKR': 'Ukraine',
  'HRV': 'Croatia'
},

Теперь это здорово и все, когда у вас есть фиксированный набор данных, который жестко закодирован. Тем не менее, в моем случае использования, я должен иметь возможность вытащить их из базы данных, и мой API делает это уже через конечную точку REST и позволяет мне вернуть ее в следующую структуру:

[
  {"key": "SRB", "value":"Serbia"},
  {"key": "UKR", "value":"Ukraine"},
  {"key": "SRB", "value":"Croatia"}
]

Есть ли простой способ конвертировать нижний формат в начало?

Я пробовал перебирать его, создавая var для каждого из них следующим образом:

            var items = JSON.parse(listFromAPI);
            for (var item in items)
            {
              var test = { item.key : item.value };
            }

но это, похоже, не сработало? Я мог бы действительно помочь.

Заранее спасибо!

  • 0
    В вашем цикле item in items будет индексами в массиве, а не фактическими элементами. Вы можете использовать цикл for...of или делать for (let i in items) let item = items[i];
Теги:
sweetalert
sweetalert2

2 ответа

4
Лучший ответ

Вы можете выполнить итерацию по базовому объекту и создать необходимые параметры ввода:

var base_format = [
  {"key": "SRB", "value":"Serbia"},
  {"key": "UKR", "value":"Ukraine"},
  {"key": "HRV", "value":"Croatia"}
];

var inputOptions = {};

for (item of base_format)
  inputOptions[item.key] = item.value;
  
console.log(inputOptions);
1

Можете ли вы попробовать это:

var items = JSON.parse(listFromAPI);
            for (var item in items)
            {
              var test = { items[item].key : items[item].value };
            }

вместо

var items = JSON.parse(listFromAPI);
            for (var item in items)
            {
              var test = { item.key : item.value };
            }

Попытка сделать его как можно ближе к существующему коду.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню