代码之家  ›  专栏  ›  技术社区  ›  pycan

对象到数组返回未定义

  •  0
  • pycan  · 技术社区  · 6 年前

    我试图将js对象转换为数组,但转换后的数组未定义。

    我最初有json,但从我所读到的内容来看,它会自动解析为js对象(当我试图解析它时,会得到syntaxerror:json中位置1处的意外标记o)。也当我 console.log(typeof cityList) 我有目标。

    初始json如下:

        [
      {
        "id": 707860,
        "name": "Hurzuf",
        "country": "UA",
        "coord": {
          "lon": 34.283333,
          "lat": 44.549999
        }
      },
      {
        "id": 519188,
        "name": "Novinki",
        "country": "RU",
        "coord": {
          "lon": 37.666668,
          "lat": 55.683334
        }
      }
        ]
    

    我像这样导入json: import cityList from './city.list.json';

    我使用此代码转换:

    const cityListArray = Object.values(cityList);
    

    如果我 console.log(cityListArray) 我没有定义。

    我也试过: const cityListArray = Object.keys(cityList).map(i => cityList[i]) 但结果是一样的。

    我不知道问题在哪里。任何帮助都将不胜感激!

    1 回复  |  直到 6 年前
        1
  •  1
  •   Tsvetan Ganev    6 年前

    您不需要转换任何内容,因为json对象已经是一个数组。

    你不应该检查一个数组 typeof 既然它回来了 "object" 对于数组。

    const a = [];
    typeof a; // "object"
    

    你应该使用 Array.isArray() 方法代替。