2014-10-02 60 views
0

下面的代碼訪問和排列其中的對象。每個對象都有一個id,一個url和一個Tag。我希望能夠基本上使用標籤來顯示與我建議的標籤連接的隨機URL。如何從數組中提取某些元素?

例如,我希望window.currentlyShownOffer.Tag始終等於花園。花園是一個標籤。

function receivedData(data) { 

     function changeOfferPicture() { 
      if (window.currentlyShownOffer) { 
       var tagArray = data[window.currentlyShownOffer.Tag]; 
       tagArray.splice(tagArray.indexOf(currentlyShownOffer), 1); 
       //alert(window.currentlyShownOffer.ImagesId); 

      } 


      var tags = Object.keys(data); 
      var randomTag = tags[Math.floor(Math.random() * tags.length)]; 
      var tagArray = data[randomTag]; 


      window.currentlyShownOffer = tagArray[Math.floor(Math.random() * tagArray.length)]; 
      document.getElementById('content').src = window.currentlyShownOffer.ImagesPath; 
     }; 
} 

的陣列看起來像任何想法:

{「Garden」:[{「ImagesId」:」63」,」ImagesPath」:」http….」,」Tag」:」Garden」},{「Garden」:[{「ImagesId」:」64」,」ImagesPath」:」http….」,」Tag」:」Garden」}]{「Food」:[{「ImagesId」:」63」,」ImagesPath」:」http….」,」Tag」:」Food」},{「Food」:[{「ImagesId」:」63」,」ImagesPath」:」http….」,」Tag」:」Food」}] 

UPDATE

function receivedData(data) { 

     function changeOfferPicture() { 
      if (window.currentlyShownOffer) { 
       var tagArray = data[window.currentlyShownOffer.Tag]; 
       tagArray.splice(tagArray.indexOf(currentlyShownOffer), 1); 
       //alert(window.currentlyShownOffer.ImagesId); 

      } 


      var tags = Object.keys(data); 
      var randomTag = tags[Math.floor(Math.random() * tags.length)]; 
      var tagArray = data[randomTag]; 

     function getObjectsWithTag(tag, tagArray){ 
       return tagArray.filter(function(item){ 
       return item.tag === tag; 
      }); 
      } 

      getObjectsWithTag(Garden); 


      window.currentlyShownOffer = tagArray[Math.floor(Math.random() * tagArray.length)]; 
      document.getElementById('content').src = window.currentlyShownOffer.ImagesPath; 
     }; 
} 

這裏也許是陣列的一個更好的主意:

{ 
「Garden’ : [{‘ImagesId」: 」38」, 」ImagesPath」: 」url」, 」Tag」: 」Food」}], 
「Sport’: [{‘ImagesId」: 」64」, 」ImagesPath」: 」url」, 」Tag」: 」Sport」}] 
} 
+0

您可以使用indexOf()http://www.w3schools.com/jsref/jsref_indexof.asp – 2014-10-02 00:16:42

+0

來訪問/查找數組中的項目,那麼在您認爲應該工作的代碼中哪些內容不起作用?我沒有看到一個實際的問題,你更暗示「某些東西」是錯誤的,這是不夠的信息 – 2014-10-02 00:22:25

+0

這段代碼給了我一個隨機的URL從所有的標籤。我想只是從那些有標籤:花園 – moss 2014-10-02 00:27:38

回答

1

您可以使用Array.filter()獲得特定的所有項目tag。如果tagArray有對象與包含標籤名的鍵tag

function getObjectsWithTag(tag, tagArray){ 
    return tagArray.filter(function(item){ 
    return item.tag === tag; 
    }); 
} 

返回值將是僅包含在原始tagArray匹配標籤名項的數組。

+0

隨機url謝謝,我是新來的,我很努力實現你的建議..我用我的東西添加了上面的代碼更新。 – moss 2014-10-02 00:35:21

+0

再次看看你的示例數組。有不匹配的括號,這使得難以理解... – ampersand 2014-10-02 00:44:36

+0

是我在上面實現的看起來正確嗎? – moss 2014-10-02 00:45:52