如何将图像推入数组并检查图像是否在数组中

How to push an image into an arra and check if image is in an array

本文关键字:数组 图像 检查 是否      更新时间:2023-09-26

我试图显示一个随机图像,一旦这个图像被显示,它被移动到另一个数组,如果新的随机图像在第二个数组中,那么它将重复该函数以获得一个新的图像。我的代码如下

var correctAnswer
var image
var images = new Array(10)
images[0] = "Bridleway.png"
images[1] = "Bus.png"
images[2] = "Footpath.png"
images[3] = "House.png"
images[4] = "Park.png"
images[5] = "Pillar.png"
images[6] = "Road.png"
images[7] = "Train.png"
images[8] = "Worship.png"
images[9] = "Youth.png"
//selecting a random image
var usedImages = new Array()
function getRandomImage() {
    image = images[Math.floor(Math.random() * 10)];
    if (image in usedImages)
        getRandomImage();
   else
    return image;
}
function displayRandomImage() {
    correctAnswer = document.getElementById("randomImage");
    correctAnswer.src = getRandomImage();
    usedImages.push(correctAnswer.src)

变化:

if (image in usedImages)

:

if (usedImages.indexOf(image) != -1)

x in y测试x是否为对象y的属性名之一,它不搜索数组的值。

y.indexOf(x)返回x在数组y中的位置。不能将其用作布尔值,因为对于第一个元素,它返回0(这是假的),当没有找到该元素时返回-1(这是真)。这就是为什么你必须将结果与-1进行比较。

另一个问题是,当您检索correctAnswer.src时,它将包含图像的完整URL,而不仅仅是文件名,因此它不会匹配images中的内容。你应该自己推送文件名。

function displayRandomImage() {
    var correctAnswer = document.getElementById("randomImage");
    var image = getRandomImage();
    correctAnswer.src = image;
    usedImages.push(image);
}