簡體   English   中英

如何將數組中的所有元素作為一個變量放在每個變量中

[英]How to put all the elements from the array as one variable each one

我有一個像這樣的數組(它是動態創建的,所以長度是可變的):

var coord_list = [[-7.84 , 12.32],[-8.30 , 10.42],[-11.84 , 12.32]....]

問題是我需要將每個元素(坐標) "[-7.84 , 12.32]"放入草皮模塊中:

turf.lineString([[-7.42,9.125],[-8.43,9.800]]...(all of them), {name: 'line 2'});

我嘗試直接放入var coord_list數組,但即使它內部結構相同也不起作用。

turf.lineString([coord_list], {name: 'line 2'}); --> Gives the Error: coordinates must be an array of two or more positions
turf.lineString(coord_list, {name: 'line 2'}); --> Gives the Error: coordinates must contain numbers       

我怎樣才能將每一個都放入草皮配方中?

從你的編輯顯示錯誤我會假設你的坐標實際上被添加為字符串而不是數字創建coord_list

根據草皮文檔 ,語法的一個例子是:

var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});

也就是說,第一個參數是位置數組。

所以你的第二行似乎是正確的:

var coord_list = [[-7.84 , 12.32],[-8.30 , 10.42],[-11.84 , 12.32]....] // is an array of positions
turf.lineString(coord_list, {name: 'line 2'}); --> Gives the Error: coordinates must contain numbers

從錯誤消息中可以看出,動態生成的coord_list包含字符串而不是數字

要測試這個,你可以在console.log中輸入每個位置值的類型。

要將每個值轉換為數字,請將每個位置的x,y值傳遞到:

let xNum = parseFloat(x);
let yNum = parseFloat(y);

在將它們送入turf.lineString([[xNum, yNum],[xNum2, yNum2],...],{name: 'line 2'})

如果您無法控制如何生成coord_list,您可以像這樣修復它:

let arr = [['-7.84' , '12.32'],['-8.30' , '10.42'],['-11.84' , '12.32']];

let coord_list = arr.map(position => {
    return [parseFloat(position[0]), parseFloat(position[1])];
}) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM