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

时间:2016-11-11 02:49:34

标签: javascript arrays

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

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)

1 个答案:

答案 0 :(得分:0)

变化:

if (image in usedImages)

为:

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

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

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

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

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