我有以下代码:
d3.csv("static/data/river.csv", function(data) {
var latlongs = data.map(function(d) { return [d.Lat,d.Lng]; })
var lineArray1 = latlongs;
console.log(lineArray1);
我得到一个输出lineArray1,看起来像[Array(2),Array(2),Array(2)....]等。但是当我看一下实际的Array(2)时,它们看起来像:
["-35.48642101", "144.8891555"]
["-35.48695061", "144.8893026"]
["-35.48704283", "144.889315"]
是否有一种方法可以消除开头的双引号?我尝试了lineArray1.map(Number),但是由于某种原因,它仅生成了一个NaN数组。我想要的输出是:
[-35.48642101, 144.8891555]
[-35.48695061, 144.8893026]
[-35.48704283, 144.889315]
谢谢!
答案 0 :(得分:1)
看起来d.Lat
和d.Lng
是字符串,因此如果要将它们转换为数字,请在它们上调用Number
:
var latlongs = data.map(function(d) { return [Number(d.Lat), Number(d.Lng)]; });
或者,要不重复两次Number
,请在内部再次使用.map
:
var latlongs = data.map(function(d) { return [d.Lat, d.Lng].map(Number); });
或者,在现代JS中:
const latlongs = data.map(({ Lat, Lng }) => [Lat, Lng].map(Number));
您的lineArray1.map(Number)
无效,因为lineArray1
包含个数组(包含数字),而不是仅包含数字,并在上调用Number
数组不起作用。