2017-01-13 53 views
0

IM創建使用P5.JS庫,顯示了其當前的天氣有色每個國家DINAMIC地圖應用無法讀取屬性「緯度」,這是我到目前爲止有:JS - 錯誤:未定義

var colors = []; 
var paises = ["AR", "BR", "CL", "CO", "GY", "PE", "PY", "UY", "BO", "VE", "EC", "GF", "SR"]; 

var datacoor; 

var url1 = "https://chart.googleapis.com/chart?"; 
var arg1 = "cht=map&chs=600x500&chld=" 
var arg2 = "&chco="; 
//var URL = url1+arguments; 

var img; 

function setup() { 
    createCanvas(500, 600); 
    img = createImg("https://chart.googleapis.com/chart?cht=map&chs=600x500&chld=AR|BR|CL|CO|GY|PE|PY|UY|BO|VE|EC|GF|SR&chco=B3BCC0|5781AE"); 
    img.hide(); 

    for (var a = 0; a < paises.length; a++){ 
    colors.append(colors, color(getColor(paises[a]))); 

    } 
} 

function draw () { 
    background(255); 

    noStroke(); 
    fill(30); 
    textSize(35); 
    //text("zz ", 15, 45); 

    if (img) { 
    imageMode(CENTER); 
    image(img, width/2, height/2); 
    } 
} 

function onData (response) { 
    datacoor = response; 
    console.log(datacoor); 
} 

function getColor (loc) { 
    var pais = loc; 
    var lat; 
    var long; 

    if (data1.hasOwnProperty(pais)) { 
     lat = data1.pais.lat; 
     console.log(lat); 
    } 

} 

here's問題:

function getColor (loc) { 
    var pais = loc; 
    var lat; 
    var long; 

//data1 is a variable with the list of all countries and their coordinates 
    if (data1.hasOwnProperty(pais)) { 
     lat = data1.pais.lat; 
     console.log(lat); 
    } 

} 

其找對象「國家報」,而不是對象變量「國家報」的裏面,我該如何解決這一問題?任何幫助表示讚賞

+0

這意味着'data1.pais'不存在。調試以找出原因。 – Carcigenicate

+0

我知道它是什麼意思,問題是什麼,我只是不知道如何解決它 – Pepe

+1

'data1'是你創建的對象嗎?去分配'pais'的地方,並確保它實際上一直在分配。在這裏發佈代碼也會有所幫助。 – Carcigenicate

回答

1

我會想你的意思做:

lat = data1[pais].lat; 

pais將被解釋爲一個字符串,並應通過獲取屬性與變量pais的值作爲你打算。

這就是所謂的"bracket notation".

+0

其工作,謝謝 – Pepe

+0

@ user87073記住,Javascript對象只是Maps/Dictionaries/Associative Arrays(無論你想要調用它們)還是與數組非常相似。你可以用'arr [0]'獲得數組的第一個元素,但是'dict [「someProp」]'來獲得字典的someProp屬性。閱讀我在答案中發佈的鏈接以獲得更好的理解。 – Carcigenicate