通过JavaScript中的键访问对象属性

时间:2017-06-15 10:42:37

标签: javascript mvvm knockout.js

正在使用Knockout.JS作为我的MVVM框架。我尝试了一些基本操作,例如使用let strReg = 'abc@2003, or something else @2017'; let reg = new RegExp(/(?=(@\d+))\1/); strReg.match(reg) //[ '@2003 ', '@2017 ' ] let reg1 = new RegExp(/(?=@(\d+))\1/) strReg.match(reg1) //null, but I expect [2003, 2007] 之类的简单内容访问我的特定markersArray对象的值。据我所知,由于存在空格,我必须使用方括号表示法。但是,当我在console.log中这个时,在我的代码中,它没有任何价值。

代码如下:

JS

在scripts.js文件中:

markersArray['Tiong Bahru Station (EWL)']


在maps.js文件中:

var stationList = [
        {name: "Tiong Bahru Station (EWL)", marker: markersArray['Tiong Bahru 
Station (EWL)']}
console.log(markersArray['Tiong Bahru Station (EWL)']); // Returns undefined

我去check.log检查我的markersArray,以确保它正确构建并正确填充。非常感谢帮助找出为什么我没有从使用密钥访问该值获得任何价值。

2 个答案:

答案 0 :(得分:1)

这段代码有效,但我不确定你遇到的问题是什么。

最简单的解决方案是将您的标记放入制造商数组,然后指向标记数组,

markers[i].marker = 'The Marker' markers[markers[i].name] = markers[i]

var markers = [
{name:"Tiong Bahru Station (EWL)", position: {lat:1.28498, lng:103.82283}}
];

var markersArray = {};
for (var i = 0; i < markers.length; i ++) {
    var name = markers[i].name;
    markersArray[name] = 'The marker';
}

console.log(JSON.stringify(markers,null,2))

console.log(JSON.stringify(markersArray,null,2))

答案 1 :(得分:0)

我添加了一个&#34; async&#34;我正在加载的脚本的关键字,这解决了问题。这是因为我在运行下面的脚本之前等待整个文档加载,这导致了一些问题。