如何从数组内的Object访问值

时间:2016-05-19 09:28:30

标签: javascript jquery arrays json rss

当我从rss数据循环时,我想从对象中提取url值。

$.ajax({
 url      : 'http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=30&callback=?&q=' + encodeURIComponent('http://www.dnoticias.pt/rss/actualidade/geral'),
 dataType : 'json',
 success  : function (data) {
   if (data.responseData.feed && data.responseData.feed.entries) {
   $.each(data.responseData.feed.entries, function (i, e) {

     title = e.title;
     description = e.description;
     category = e.categories[0];
     media = e.mediaGroups;
     console.log(media);
   }
  }
});

以下是控制台日志的输出:

mediaGroups: Array[1]
 0: Object
  contents: Array[1]
   0: Object
    type: "image/jpeg"
    url: "http://...."

由于

3 个答案:

答案 0 :(得分:1)

从您显示的输出mediaGroups是一个对象数组,它们本身包含一个contents属性,这是另一个对象数组,因此您需要使用嵌套循环来拉出每个{来自这些对象的{1}}属性。

url

如果您总是只想从数组中检索第一个项目,并且可以保证每个子数组至少包含一个项目,那么您可以通过索引访问它们,如下所示:

$.each(data.responseData.feed.entries, function(_, entry) {
    $.each(entry.mediaGroups, function(_, mediaGroup) {
        $.each(mediaGroup.contents, function(_, content) {
            var url = content.url;
            // use url as required here...
        });
    });
});

Working example

答案 1 :(得分:0)

您只需通过索引访问数组元素,按属性名称访问属性:

 e.mediaGroups[0].contents[0].type

答案 2 :(得分:0)

如果数组只有一个元素,那么它就像这样简单:

media = e.mediaGroups[0];
contents = media.contents[0];

然后你可以这样做:

someVar1 = contents.type;
someVar2 = contents.url;

否则你必须遍历mediaGroupscontents以及