如何从 Javascript 输出中删除这些引号?

Posted

技术标签:

【中文标题】如何从 Javascript 输出中删除这些引号?【英文标题】:How Can I remove these quotes from the Javascript output? 【发布时间】:2021-07-12 00:41:36 【问题描述】:

我有一组这样的数据 -

[
 0: latitude: "0", longitude: "0", user_country_name: "-", user_country_code: "-", total_visitors: 4
 1: latitude: "-33.867851", longitude: "151.207321", user_country_name: "Australia", user_country_code: "AU", total_visitors: 1
 2: latitude: "-23.960831", longitude: "-46.333611", user_country_name: "Brazil", user_country_code: "BR", total_visitors: 1
 3: latitude: "45.411171", longitude: "-113.468712", user_country_name: "Canada", user_country_code: "CA", total_visitors: 2
 4: latitude: "47.366669", longitude: "8.55", user_country_name: "Switzerland", user_country_code: "CH", total_visitors: 1
]

我通过使用得到结果

var location_data = [];
  $.ajax(
    type: "GET",
    url: url,
    data: data, 
    success: function(data)
    
        var obj = JSON.parse(data);
        console.log(obj)
        obj.forEach(function(item) 

          var data =  latLng: [parseFloat(item.latitude), parseFloat(item.longitude)], name: item.user_country_name 
      
          location_data.push(data);
        )
     
  );

  console.log(location_data)

输出:类似的东西

[
 0: latLng:  Array(2), name: "-"
 1: latLng:  Array(2), name: "Australia"
 2: latLng:  Array(2), name: "Brazil"
 3: latLng:  Array(2), name: "Canada"
 4: latLng:  Array(2), name: "Switzerland"
]

但我想要类似以下的内容,我的意思是显示对象的项目,如 [-33.867851, 151.207321] 而不是 array(2);

预期输出:

[
     0: latLng: [0,0], name: "-"
     1: latLng: [-33.867851, 151.207321], name: "Australia"
     2: latLng: [-23.960831, -46.333611], name: "Brazil"
     3: latLng: [45.411171, -113.468712], name: "Canada"
     4: latLng: [47.366669, 8.55], name: "Switzerland"
]

【问题讨论】:

如果你想要文本,为什么要将它设置为一个对象到innerhtml?您可以使用 JSON.stringify() 但它会添加比您可能想要的更多的引号...... 对不起,这是我的错误。我已经更新了这个问题。谢谢。 您正在打印控制台中的结果?见this 【参考方案1】:

输入数据本身的纬度/经度为字符串,而不是数字。字符串是任何类型的文本,用 "" 引号括起来,就像在您的输入数据中一样。您需要将其转换为数字。对于我们人类来说,“-33.867851”和-33.867851在直觉上是一样的。但是对于计算机来说,它们是完全不同的东西:一个是文本,一个是数字,不管文本有没有数字(它可以是任何东西)。

您可以:

直接将纬度/经度作为数字发送(-33.867851 而不是“-33.867851”) 或者,如果您无法控制输入数据,请在您设置数据的 foreach 中使用 parseFloat,例如latLng: [parseFloat(item.latitude), parseFloat(item.longitude)] 将数字的字符串表示形式转换为实际数字。

【讨论】:

谢谢。但是我怎样才能从文本中删除这个数组 2 呢?有什么办法吗? 我不明白你所说的数组 2 是什么意思?【参考方案2】:

我认为问题在于您设置数据的那一行。

var data =  latLng: [parseFloat(item.latitude), parseFloat(item.longitude)], name: item.user_country_name 

您正在创建一个数组,导致打印输出为array(2) 解决方案是在该行中添加单引号或双引号。也不需要解析数据,因为它已经是一个字符串了。

var data =  latLng: "["+item.latitude+", "+item.longitude+"]", name: item.user_country_name 

【讨论】:

它显示 latLng: "[37.56826, 126.977829]", name: "Korea (Republic of)" 但我需要在 latLng 项目中删除 " " 这个引号。我的意思是 - latLng: [37.56826, 126.977829], name: "Korea (Republic of)"

以上是关于如何从 Javascript 输出中删除这些引号?的主要内容,如果未能解决你的问题,请参考以下文章

如何从innerHTML输出中删除引号

有啥方法可以在 Javascript 中删除这些引号?

如何从 Python itertools 输出中删除字符串引号、逗号和括号?

如何从字符串列表中删除引号并将其再次存储为列表..?

不使用索引号从数组中删除[重复]

为啥 IntelliJ 不断从这个 JavaScript 模板字符串中删除反引号?