我知道这个问题听起来很奇怪。但这是一个奇怪的问题。让我澄清一下。
我正在使用脸谱图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_tags
的对象,其中包含名为116
的对象数组,此数组的索引0包含带有变量id, name, offset and length
的对象。< / p>
现在我想要做的是,显然用message
变量替换标签为"name": "Alex Morley-Finch"
的文本“Alex Morley-Finch”。然后使用id,length和offset我可以使用ID来替换带有该配置文件的html链接的文本!
这一切看起来都很简单,但是,我显然希望我的代码是动态的,因此代码适用于任何位置的任何标记。
对象数组"116"
的名称始终与其中包含的偏移量匹配。
实际问题:
如何动态获取对象数组的名称(在本例中为“116”)?
因为我的代码类似于(伪代码):
if message has tag
get name of tag
if message contains name of tag
replace message name using offset and length with html link tag with href = facebook url / id
end if
end if
这将留下我的“消息”的html表示
事情是我无法得到message_tag的名称,因为id必须做类似的事情:
// 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 - &gt; 116但这将是非常昂贵的性能和糟糕的编码,我甚至不确定你是否可以通过变量名引用数组...... ......
我真的很难过。
请帮助!
亚历
答案 0 :(得分:2)
这将循环遍历所有标签。如果有多个标记,您可能需要添加代码以检查它是否要更改。
for (var tag in message_tags) {
message_tags[tag].name = "...";
}
答案 1 :(得分:0)
For..in
解决方案使用for..in
javascript statement遍历您的对象属性,然后根据这些结果进行操作。