.map之后的D3.js数组双引号

时间:2018-11-09 01:26:57

标签: javascript arrays d3.js

我有以下代码:

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]

谢谢!

1 个答案:

答案 0 :(得分:1)

看起来d.Latd.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数组不起作用。