javascript 通过数组的数组MapReactJS / JS

tcomlyy6  于 2022-12-28  发布在  Java
关注(0)|答案(3)|浏览(361)

我有下面的code
我有一个数组数据的数组。

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"]

请帮助我更正我的代码。
谢谢。

wgxvkvu9

wgxvkvu91#

我修好了你的code
为了便于理解,我将其分为两个变量。

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

然后可以在select标记中显示它

hi3rlvi2

hi3rlvi22#

const cities = data.flat().map(item => item.city);

flat()方法创建一个新数组,将所有子数组元素递归地连接到该数组中,直到指定的深度。
JavaScript中的Javascript map()方法通过对父数组中的每个元素调用特定函数来创建数组。它是一个非变异方法。通常,map()方法用于迭代数组并对数组的每个元素调用函数。

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

fd3cxomn3#

由于并非每个环境都提供平面,因此我提供了一个替代解决方案:

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

相关问题