Проверка соответствия перед добавлением в массив

#javascript #arrays #loops

#javascript #массивы #циклы

Вопрос:

У меня есть пустой массив, который будет получать составные объекты при нажатии кнопки. Я пытаюсь сгенерировать случайный URL-адрес, который будет назначен каждому, но только в том случае, если URL-адрес ранее не использовался.

Запутанная часть заключается в том, что я не могу проверить пустой массив, поэтому я должен написать условие в начале, в котором говорится, что если массив пуст, добавьте URL. Кажется, я не могу заставить это работать, поэтому, если кто-нибудь может помочь, я был бы признателен! Заранее спасибо.

 var pets = [];

var petPics = ["http://cdn2-..", etc]

this.getPetPic = function() {
    var random = Math.floor(Math.random() * petPics.length);
    if (pets[0] === "undefined") {
        return petPics[random];
    } else {
        for (var pet of pets) {
            if (petPics[random] != pet.image) {
                return petPics[random];
            }
        }
    }
}
  

Комментарии:

1. —Забудьте свой код на секунду — Ваш код действительно сбивает с толку. Не могли бы вы попытаться лучше объяснить свой вопрос, пожалуйста? Почему вы не можете проверить по пустому массиву?

2. используйте pets.length === 0 вместо pets[0] === "undefined" или измените его на typeof pet[0] === 'undefined'

3. почему вы используете эти циклы, а не indexOf() ? И почему вы проверяете строку «undefined»?