做一個當前使用Knockout.JS作爲我的MVVM框架的項目。我正在嘗試一些基本操作,例如使用簡單的如markersArray['Tiong Bahru Station (EWL)']
來訪問我的特定對象markersArray
的值。我明白,由於存在空格,我必須使用方括號表示法。但是,當我console.log這個,並進一步在我的代碼中,它沒有價值。通過JavaScript中的鍵訪問對象屬性
代碼如下:
JS
在scripts.js中的文件:
var stationList = [
{name: "Tiong Bahru Station (EWL)", marker: markersArray['Tiong Bahru
Station (EWL)']}
console.log(markersArray['Tiong Bahru Station (EWL)']); // Returns undefined
在maps.js文件:
var markersArray = {};
for (var i = 0; i < markers.length; i ++) {
marker = new google.maps.Marker({
position: markers[i].position,
map: map,
animation: google.maps.Animation.DROP
});
var name = markers[i].name;
markersArray[name] = marker;
}
var markers = [
{name:"Tiong Bahru Station (EWL)", position: {lat:1.28498, lng:103.82283}}
];
我去檢查我的markersArray的console.log,以確保它構建正確並且它正確填充。希望能幫助我們弄清楚爲什麼我沒有從使用密鑰訪問數值中獲得任何價值。
這不是足夠的代碼給你任何答案。什麼是你迭代的marker數組來填充markersArraty對象,這是一個對象的可怕名字。您還必須確保maps.js在script.js之前運行該代碼 – Dellirium
您似乎讓您的對象有點混亂。 'stationList'是一個你正在定義的數組,但是沒有定義'markersArray',所以定義'stationList'失敗。在你更新的第二段代碼中,沒有數組「標記」,因此也失敗了。我建議你做一個你希望工作的片段,然後社區可以提供建議。 – user3094755
我已經添加了新代碼,是的,maps.js在scripts.js之前運行。我可以在scripts.js中使用console.log(markerArray),我可以看到整個對象。是的,我將重新命名該對象,正在玩耍,所以我錯過了我的命名約定。大聲笑 – bryancresswell