如果值在 javascript 中则禁用数组
Disable array if has value in javascript
我正在尝试使用 javascript 开发一个简单的横幅轮播。
如何确保只有值为 "active": 1 的数组才包含在随机播放中?
<div id="ad-container"></div>
<script>
var banner = [{
"img": "https://DOMAIN.TLD/IMG.JPG",
"url": "https://LINK.DOMAIN.TLD",
"maxWidth": 468,
"active": 1
},
{
"img": "https://DOMAIN.TLD/IMG2.JPG",
"url": "https://LINK2.DOMAIN.TLD",
"maxWidth": 468,
"active": 0
}
,
{
"img": "https://DOMAIN.TLD/IMG3.JPG",
"url": "https://LINK3.DOMAIN.TLD",
"maxWidth": 468,
"active": 1
}
];
function shuffle(banners) {
var j, x, i;
for (i = banners.length - 1; i > 0; i--) {
j = Math.floor(Math.random() * (i + 1));
x = banners[i];
banners[i] = banners[j];
banners[j] = x;
}
return banners;
}
shuffle(banner);
document.getElementById('ad-container').innerHTML = '<a href="' + banner[0]["url"] + '"><img src="' + banner[0]["img"] + '" style="width: 100%;height: auto;max-width: ' + banner[0]["maxWidth"] + 'px;"></a>';
</script>
所有值为 "active": 0 的数组不应包含在随机播放中。
也许有人知道如何改进 shuffle/code 或者如果同一页面上有更多 document.getElementById 包含,如何防止相同的横幅在页面上多次显示。
提前致谢。
只是过滤数组。
var banner = [{
"img": "https://DOMAIN.TLD/IMG.JPG",
"url": "https://LINK.DOMAIN.TLD",
"maxWidth": 468,
"active": 1
},
{
"img": "https://DOMAIN.TLD/IMG2.JPG",
"url": "https://LINK2.DOMAIN.TLD",
"maxWidth": 468,
"active": 0
}
,
{
"img": "https://DOMAIN.TLD/IMG3.JPG",
"url": "https://LINK3.DOMAIN.TLD",
"maxWidth": 468,
"active": 1
}
];
let activeParts = banner.filter( info => info.active );
console.log( activeParts );
// do whatever, e.g.:
// shuffle( activeParts );
banner = banner.map( value => {
if( value.active === 1 ){
return value
}
});
这将缩小您的数组以仅包含数组中的活动对象。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
我正在尝试使用 javascript 开发一个简单的横幅轮播。
如何确保只有值为 "active": 1 的数组才包含在随机播放中?
<div id="ad-container"></div>
<script>
var banner = [{
"img": "https://DOMAIN.TLD/IMG.JPG",
"url": "https://LINK.DOMAIN.TLD",
"maxWidth": 468,
"active": 1
},
{
"img": "https://DOMAIN.TLD/IMG2.JPG",
"url": "https://LINK2.DOMAIN.TLD",
"maxWidth": 468,
"active": 0
}
,
{
"img": "https://DOMAIN.TLD/IMG3.JPG",
"url": "https://LINK3.DOMAIN.TLD",
"maxWidth": 468,
"active": 1
}
];
function shuffle(banners) {
var j, x, i;
for (i = banners.length - 1; i > 0; i--) {
j = Math.floor(Math.random() * (i + 1));
x = banners[i];
banners[i] = banners[j];
banners[j] = x;
}
return banners;
}
shuffle(banner);
document.getElementById('ad-container').innerHTML = '<a href="' + banner[0]["url"] + '"><img src="' + banner[0]["img"] + '" style="width: 100%;height: auto;max-width: ' + banner[0]["maxWidth"] + 'px;"></a>';
</script>
所有值为 "active": 0 的数组不应包含在随机播放中。
也许有人知道如何改进 shuffle/code 或者如果同一页面上有更多 document.getElementById 包含,如何防止相同的横幅在页面上多次显示。
提前致谢。
只是过滤数组。
var banner = [{
"img": "https://DOMAIN.TLD/IMG.JPG",
"url": "https://LINK.DOMAIN.TLD",
"maxWidth": 468,
"active": 1
},
{
"img": "https://DOMAIN.TLD/IMG2.JPG",
"url": "https://LINK2.DOMAIN.TLD",
"maxWidth": 468,
"active": 0
}
,
{
"img": "https://DOMAIN.TLD/IMG3.JPG",
"url": "https://LINK3.DOMAIN.TLD",
"maxWidth": 468,
"active": 1
}
];
let activeParts = banner.filter( info => info.active );
console.log( activeParts );
// do whatever, e.g.:
// shuffle( activeParts );
banner = banner.map( value => {
if( value.active === 1 ){
return value
}
});
这将缩小您的数组以仅包含数组中的活动对象。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map