通过 JavaScript 中的键访问对象属性
Posted
技术标签:
【中文标题】通过 JavaScript 中的键访问对象属性【英文标题】:Accessing object property via key in JavaScript 【发布时间】:2017-11-17 19:49:48 【问题描述】:正在做一个项目,目前使用 Knockout.JS 作为我的 MVVM 框架。我正在尝试一些基本操作,例如使用markersArray['Tiong Bahru Station (EWL)']
之类的简单方法访问我的特定markersArray
对象的值。我知道由于存在空格,我必须使用方括号表示法。但是,当我 console.log 这个,以及在我的代码中,它没有任何价值。
代码如下: 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
];
我去 console.log 检查了我的标记数组,以确保它正确构建并正确填充。希望能帮助我弄清楚为什么我只使用密钥访问值没有得到任何价值。
【问题讨论】:
这还不足以给你任何答案。您迭代以填充 markersArraty 对象的标记数组是什么,顺便说一句,这是一个可怕的对象名称。您还必须确保 maps.js 在 script.js 之前运行该代码 您的对象似乎有点乱。stationList
是您正在定义的数组,但没有定义 markersArray
,因此定义 stationList
失败。在您更新的第二个 sn-p 中,没有 Array markers
所以也失败了。我建议你制作一个你希望能起作用的 sn-p,然后社区可以提供建议。
我添加了新代码,是的,maps.js 在 scripts.js 之前运行。我可以 console.log(markerArray) 在 scripts.js 中,我可以看到整个对象。是的,我将重命名该对象,正在玩耍,所以我忘记了我的命名约定。大声笑
@user3094755 我已经添加了新代码。
【参考方案1】:
这种 sn-p 类型的作品,但我不确定你有什么问题。
最简单的解决方案是将标记放入 makers 数组,然后用
指向标记数组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))
【讨论】:
是的,如果它们都在同一个文件上运行,它就可以工作,但是如果我在 scripts.js 上尝试它,它就不再提供值了。 谢谢老兄,我发现了问题。【参考方案2】:我在正在加载的脚本中添加了一个“async”关键字,从而解决了问题。这是因为我在运行它下面的脚本之前等待整个文档加载,这导致了一些问题。
【讨论】:
以上是关于通过 JavaScript 中的键访问对象属性的主要内容,如果未能解决你的问题,请参考以下文章