做一个当前使用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