Отображение через массив массивов ReactJS/JS

У меня есть следующий код .

У меня есть этот массив данных массива.

    const data = [
    [
      {
        city: "Phnom Penh",
        country: "KH"
      },
      {
        city: "Tirana",
        country: "AL"
      },
      {
        city: "Andorra la Vella",
        country: "AD"
      }
    ],
    [
      {
        city: "Mariehamn",
        country: "AX"
      }
    ],
    []
    ];

Я пытаюсь напечатать все city в новой переменной, а затем хочу показать в select

    const cities = data.map((el) => el).map((el, idx) => el[idx]?.city);

      <select>
        {cities.map((el) =>  (
          <option value = {el} key = {idx}>
            {el}
          </option>)}
      </select>

Но я получаю только первый город.

Выход сейчас

    (3) ["Phnom Penh", undefined, undefined]

Но вывод должен быть

    (4) ["Phnom Penh", "Tirana", "Andorra la Vella", "Mariehamn"]

Пожалуйста, помогите мне исправить мой код.

Спасибо.

сделать квартиру и карту. также не используйте индекс в качестве ключа. используйте другой уникальный идентификатор, например, код страны + название города

cmgchess 27.12.2022 09:00

Возможно, вы захотите взглянуть на Array.prototype.flatMap()

secan 27.12.2022 09:03
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
50
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Я исправил твой код

Для простоты понимания того, что происходит, я разделил его на две переменные.

  const a = data.flatMap((num) => num);
  const b = a.map((el) => el.city);

И тогда вы можете показать это в своем теге select

flatMap внутренне создает карту и плоскость, и в этом случае шаг карты кажется ненужным. поэтому квартиры достаточно

cmgchess 27.12.2022 09:20

Поскольку квартира может быть недоступна в каждой среде, я предлагаю альтернативное решение:

let cities = [];
data.forEach(el=> {
    el.forEach(element => {
    cities.push(element.city);
  });
});
const cities = data.flat().map(item => item.city);

Метод flat() создает новый массив со всеми элементами подмассива, объединенными в него рекурсивно до указанной глубины.

Метод Javascript map() в JavaScript создает массив, вызывая определенную функцию для каждого элемента, присутствующего в родительском массиве. Это немутирующий метод. Как правило, метод map() используется для перебора массива и вызова функции для каждого элемента массива.

console.info(cities);
// Output: ["Phnom Penh", "Tirana", "Andorra la Vella", "Mariehamn"]

Другие вопросы по теме