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

时间:2011-10-20 10:22:24

标签: javascript

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

我正在使用脸谱图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但这将是非常昂贵的性能和糟糕的编码,我甚至不确定你是否可以通过变量名引用数组...... ......

我真的很难过。

请帮助!

亚历

2 个答案:

答案 0 :(得分:2)

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

for (var tag in message_tags) {
    message_tags[tag].name = "...";
}

答案 1 :(得分:0)

For..in解决方案

使用for..in javascript statement遍历您的对象属性,然后根据这些结果进行操作。