代码之家  ›  专栏  ›  技术社区  ›  displayName is undefined

如何将字符串转换为非字符串?

  •  -1
  • displayName is undefined  · 技术社区  · 2 年前

    ['{lat:52.5159, lng:13.3777}', '{lat:37.773972, lng:-122.431297}', '{lat:39.916668, lng:116.383331}']
    

    [{lat:52.5159, lng:13.3777}, {lat:37.773972, lng:-122.431297}, {lat:39.916668, lng:116.383331}]
    

    这可能吗?如果是这样,我该怎么做?

    2 回复  |  直到 2 年前
        1
  •  2
  •   Andy    2 年前

    因为这些不是JSON字符串,所以无法解析它们。

    map 在阵列上。在每次迭代中匹配数字,然后返回对象,确保将字符串强制为数字。

    const arr = [
      '{lat:52.5159, lng:13.3777}',
      '{lat:37.773972, lng:-122.431297}',
      '{lat:39.916668, lng:116.383331}'
    ];
    
    const re = /-?[\d]+\.[\d]+/g;
    
    const out = arr.map(str => {
      const [ lat, lng ] = str.match(re);
      return { lat: +lat, lng: +lng };
    });
    
    console.log(out);
        2
  •  1
  •   Kwright02    2 年前

    ['{"lat":52.5159, "lng":13.3777}', '{"lat":37.773972, "lng":-122.431297}', '{"lat":39.916668, "lng":116.383331}']
    

    从这里,我们可以简单地进行数组映射,将其从字符串中映射到对象:

    var input = ['{"lat":52.5159, "lng":13.3777}', '{"lat":37.773972, "lng":-122.431297}', '{"lat":39.916668, "lng":116.383331}']
    
    input = input.map(value => JSON.parse(value));
    

    这将使输入看起来像这样:

    [{lat:52.5159, lng:13.3777}, {lat:37.773972, lng:-122.431297}, {lat:39.916668, lng:116.383331}]