Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Javascript中没有对象名称的对象中获取值_Javascript - Fatal编程技术网

如何从Javascript中没有对象名称的对象中获取值

如何从Javascript中没有对象名称的对象中获取值,javascript,Javascript,我知道这个问题听起来很奇怪。但这是一个奇怪的问题。让我澄清一下 我正在使用facebook图形api。我的页面的提要以JSON格式返回,我在这里有一点JSON: "message": "A3Media Uk Website is fully up and running! Tell your friends, We can't make Beautiful Websites without clients!\n - Alex Morley-Finch", "message_tags": {

我知道这个问题听起来很奇怪。但这是一个奇怪的问题。让我澄清一下

我正在使用facebook图形api。我的页面的提要以JSON格式返回,我在这里有一点JSON:

"message": "A3Media Uk Website is fully up and running! Tell your friends, We can't make Beautiful Websites without clients!\n - Alex Morley-Finch",
"message_tags": {
    "116": [
        {
            "id": "514033508",
            "name": "Alex Morley-Finch",
            "offset": 116,
            "length": 17
        }
        ]
    }
据我所知,有一个名为
message\u tags
的对象,它包含一个名为
116
的对象数组,该数组的索引0包含一个变量
id、name、offset和length
的对象

现在我想做的是,显然,将
消息
变量中的文本“Alex Morley Finch”替换为标记
“name”:“Alex Morley Finch”
。然后使用id、长度和偏移量,我可以使用id将文本替换为指向该配置文件的html链接

这一切看起来都很简单,但是,我显然希望我的代码是动态的,这样代码将适用于任何位置的任何标记

对象数组的名称始终与其中包含的偏移量匹配

实际问题是:

如何动态获取对象数组的名称(在本例中为“116”)

因为我的代码类似于(伪代码):

这将给我留下“消息”的html表示

问题是我无法获取消息标签的名称,因为我必须执行以下操作:

// data[index] represents the current message

var json = JSON.parse(XmlHttpResponse.responseText);
json.data[index].message_tags.116[0].name;
正如我们所看到的,这不是动态的。此代码仅适用于此标记

那么,如何在不引用116的情况下获得名称?有可能吗

我曾考虑尝试迭代1、2、3、4、5-->116,但这将导致性能非常高的成本和糟糕的编码,我甚至不确定是否可以通过变量名引用数组

我真的被难住了

请帮忙


Alex

这将遍历所有标记。如果有多个标记,您可能需要添加代码来检查它是否是要更改的代码

for (var tag in message_tags) {
    message_tags[tag].name = "...";
}
用于解决方案中的

使用
中的遍历对象属性,然后根据这些结果进行操作。

您只需使用。旁注:您的问题实际上与JSON无关,而是如何访问JavaScript对象的属性‌​ 是一个链接),但我仍然需要使用“116”。对于(vars in 116){}No,您可以在
message_tags
中迭代对象的属性。
for (var tag in message_tags) {
    message_tags[tag].name = "...";
}