以下代码访问并使用其中的对象进行数组。每个对象都有和id,url和Tag。我希望能够基本上使用Tag来显示与我建议的标签相关的随机URL。
例如,我希望window.currentlyShownOffer.Tag始终等于Garden。花园是一个标签。
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”}]
更新
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 :(得分:1)
您可以使用Array.filter()
获取具有特定tag
的所有项目。如果tagArray
的对象的密钥tag
包含标记名称:
function getObjectsWithTag(tag, tagArray){
return tagArray.filter(function(item){
return item.tag === tag;
});
}
返回的值将是一个数组,其中只包含与原始tagArray
中的标记名称匹配的项目。