正在使用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,以确保它正确构建并正确填充。非常感谢帮助找出为什么我没有从使用密钥访问该值获得任何价值。
答案 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;我正在加载的脚本的关键字,这解决了问题。这是因为我在运行下面的脚本之前等待整个文档加载,这导致了一些问题。