通过 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 中的键访问对象属性的主要内容,如果未能解决你的问题,请参考以下文章

有效地计算 JavaScript 中对象的键/属性的数量

javascript获取对象直接量中的属性和属性值

map中键为对象,用js将map中的键取出时,如何取出对象,以及它的属性

通过 json 中的键访问值会抛出 undefined

通过Java中的键编号订购地图对象

ja对象属性—枚举检查删除