如何从数组中的对象访问值

How can I access the value from an Object inside an array

当我从 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://...."

谢谢

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

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

从你显示的输出中 mediaGroups 是一个对象数组,它本身包含一个 contents 属性 这是另一个对象数组,所以你需要使用 nested循环从这些对象中取出每个 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...
        });
    });
});

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

$.each(data.responseData.feed.entries, function (i, entry) {
    var url = entry.mediaGroups[0].contents[0].url;
    // use url as required here...
});

Working example

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

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

然后你可以这样做:

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

否则你将不得不遍历 mediaGroupscontents