我目前正試圖在使用D3的波多黎各地圖上創建一個choropleth。使用Scott Murray's Example on Choropleths,我試圖將數據綁定到波多黎各的每個城市。我有一個佔位符空對象來保存數據從CSV被送入像這樣:JavaScript中的對象卡在csv文件的最後一行
var properties = {};
然後,我開始閱讀行CSV文件。我將相應的值分配給如下一些變量:
properties.dataID = parseFloat(data[i].id);
properties.dataMunic_Total = parseFloat(data[i].municipio_total);
//etc.
所有罰款和丹迪。我CONSOLE.LOG檢查數據是否被正確地保存:
console.log(properties.dataID);
//Displays 1, which is correct.
然而,當我嘗試訪問整個對象:
console.log(properties);
它只顯示CSV文件的最後一行。我將第一個for循環內的最後一個console.log()語句立即運行,在將數據分配給對象的屬性後立即運行,並且每次循環遍歷console.log()時,它都只顯示CSV文件的最後一行。
當我嘗試將對象屬性分配給我的地圖對象(城市)時,它分配的所有內容都是CSV文件的最後一行。所以我試着單獨設置它們,看起來似乎有效。然而,JavaScript的抱怨,酒店沒有在對象存在:
obj.geometries[j].properties.year[properties.dataYear - 2000].id = properties.dataID;
Uncaught TypeError: Cannot read property 'id' of undefined
我試圖對其進行初始化,好像它是一個新的變量:
var obj.geometries[j].properties.year[properties.dataYear - 2000].id = properties.dataID;
但後來我得到了控制檯上回:
Uncaught SyntaxError: Unexpected identifier
除了語法錯誤,我認爲這主要是由於我的附加陣列每個城市,所以我可以持有不同的組每年數據的事實......不過我還是要說不明白JavaScript爲什麼會這樣。
我的問題是:爲什麼我的對象的行爲是這樣的? d3.csv有問題嗎?難道我做錯了什麼?
非常感謝您的回答。我必須按照我分配數據的方式修復其他內容。我沒有正確訪問對象的年份,所以它會繼續吐出未定義的。 – shredmasteryjm