下面的代碼訪問和排列其中的對象。每個對象都有一個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」}]
}
您可以使用indexOf()http://www.w3schools.com/jsref/jsref_indexof.asp – 2014-10-02 00:16:42
來訪問/查找數組中的項目,那麼在您認爲應該工作的代碼中哪些內容不起作用?我沒有看到一個實際的問題,你更暗示「某些東西」是錯誤的,這是不夠的信息 – 2014-10-02 00:22:25
這段代碼給了我一個隨機的URL從所有的標籤。我想只是從那些有標籤:花園 – moss 2014-10-02 00:27:38