gpt4 book ai didi

javascript - 无法访问 Javascript 中对象的字段

转载 作者:行者123 更新时间:2023-12-02 15:27:32 24 4
gpt4 key购买 nike

我正在尝试处理以 JSON 形式传递到网页的对象,甚至在访问其中的字段时也遇到了麻烦。该对象的格式为

{  
"tag":{
"edges":{
"start1":"end1",
"start2":"end2"
},
"nodes":[
"node1",
"node2"
]
}
}

这是我的功能:

function processSimilarMap(obj){
for(var o in obj){
if(obj.hasOwnProperty(o)){
var k=obj[o];
var nodes=k.nodes;//cannot find the field here
console.log(nodes);
var edges=k.edges;//cannot find the field here
console.log(edges);
for(var i=0;i<nodes.length;i++){
//do something
}
for(var e in edges){
if(edges.hasOwnProperty(e)){
//do something
}
}

}
}
}

但是,当我将对象传递给函数时,我无法到达字段 k.nodesk.edges 。日志显示它们只是 undefined 。我尝试使用 k["nodes"]但这也没有帮助。我在这里做错了什么?

很抱歉问这么低级的问题,但我对对象和 map 的格式相同这一事实感到非常困惑(如果我错了,请纠正我)。有没有像“object.attribute”这样更简单、更优雅的方法来处理对象,而不是循环所有可能的属性(字段)并找到那些“自己的属性”?

提前致谢!

最佳答案

它似乎对我有用:http://jsfiddle.net/d01Lxcgm/

var obj = {
"tag": {
"edges": {
"start1": "end1",
"start2": "end2"
},
"nodes": ["node1", "node2"]
}
};

你确定你正在解析它,如果它只是一个 JSON 字符串,或者(我很抱歉问了这样一个愚蠢的问题,但只是先检查最简单的选项)你确定你调用了该函数并传递了正确的对象吗?至于更优雅的方式。如果该对象是动态循环属性,那么最好的方法是确保您始终处理所有内容。如果您知道对象的结构始终相同,那么您可以使用点表示法访问它。

    var tag = obj.tag;
var nodes = tag.nodes;
var edges = tag.edges;
for (var i = 0; i < nodes.length; i++) {
// do something with nodes
}
for (var e in edges) {
if (edges.hasOwnProperty(e)) {
// do something with edges
}
}

当然,您始终可以像您在问题中所说的那样进行类似数组的访问:

obj['tag'];

关于javascript - 无法访问 Javascript 中对象的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33570113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com