@makedonets

Как правильно получить значение json?

Есть форма с несколькими селектами и файл json который имеет примерно такую структуру
{
  "ФИО" : "Иванов Сергей",
  "Адрес" : {
    "Город" : "Москва",
    "Улица" : "Пятницкая",
    "Дом" : "35"
  }
}
{
  "ФИО" : "Сидоров Иван",
  "Адрес" : {
    "Город" : "Питер",
    "Улица" : "Ленина",
    "Дом" : "42"
  }
}

Через getjson подтягиваю данные в первый селект с поля ФИО. Необходимо что бы пользователь во втором селекте мог выбрать любой ключ (город, улица, дом) и в любом другом поле отобразилось значение выбранного ключа у выбранного человека. Как это можно сделать? Получается некоторая зависимость.
  • Вопрос задан
  • 353 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
<select id="person"></select>
<select id="key"></select>
<span id="value"></span>

const data = [
  {
    "ФИО": "Иванов Сергей",
    "Адрес": {
      "Город": "Москва",
      "Улица": "Пятницкая",
      "Дом": "35",
    },
  },
  {
    "ФИО": "Сидоров Иван",
    "Адрес": {
      "Город": "Питер",
      "Улица": "Ленина",
      "Дом": "42",
    },
  },
];

const select = (selector, options) => $(selector)
  .html(options.map(n => `<option>${n}</option>`).join(''))
  .val(null);

const $person = select('#person', data.map(n => n['ФИО']));
const $key = select('#key', Object.keys(data[0]['Адрес']));

$person.add($key).change(function() {
  const person = $person.val();
  const key = $key.val();

  if (person && key) {
    $('#value').text(data.find(n => n['ФИО'] === person)['Адрес'][key]);
  }
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы