Выберите случайный элемент (показанный попарно) из массива и удалите его, перезапустите, когда массив пуст - PullRequest
0 голосов
/ 23 марта 2020

Я супер-новичок ie в кодировании, и мне нужна помощь для достижения этого кода. Я пытаюсь получить случайный элемент (в парах) из массива, а затем удалить его из этого массива, пока пользователь не перейдет к последнему элементу или не пройдет 60 дней после использования службы (cook ie?) ... I Я создал скрипт с помощью других вопросов здесь, в stackoverflow, и вот мои результаты.

`<script>
var randomizer = document.getElementById("getImgBut");
var dog1 = '/app/wp-content/mediaApp/yo-creo-mi-realidad/01F.jpg';
var dog2 = '/app/wp-content/mediaApp/yo-creo-mi-realidad/01B.jpg';
var dogpics=[dog1,dog2];

var yourPics = [
  dogpics,
[   '/app/wp-content/mediaApp/yo-creo-mi-realidad/02F.jpg', '/app/wp-content/mediaApp/yo-creo-mi-realidad/02B.jpg'   ],
[   '/app/wp-content/mediaApp/yo-creo-mi-realidad/03F.jpg', '/app/wp-content/mediaApp/yo-creo-mi-realidad/03B.jpg'   ],
[   '/app/wp-content/mediaApp/yo-creo-mi-realidad/04F.jpg', '/app/wp-content/mediaApp/yo-creo-mi-realidad/04B.jpg'   ],
[   '/app/wp-content/mediaApp/yo-creo-mi-realidad/05F.jpg', '/app/wp-content/mediaApp/yo-creo-mi-realidad/05B.jpg'   ],
[   '/app/wp-content/mediaApp/yo-creo-mi-realidad/06F.jpg', '/app/wp-content/mediaApp/yo-creo-mi-realidad/06B.jpg'   ] //This array has 52 cards but I cutted it for example purposes
];

function get_random_number(array){
    return Math.floor(Math.random() * array.length |0);
}  // here is where I have tried to modify with other scripts like the one in this page https://stackoverflow.com/questions/38882487/select-random-item-from-array-remove-it-restart-once-array-is-empty with no success

randomizer.addEventListener("click", function() {
var rand_number = get_random_number(yourPics);
console.log(rand_number);
document.getElementById('img1').src = yourPics[rand_number][0];
document.getElementById('img2').src = yourPics[rand_number][1];
});

var card = document.querySelector('.card');
card.addEventListener( 'click', function() {
  card.classList.toggle('is-flipped');
});
</script>`

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 23 марта 2020

Я не совсем понимаю, что вы имеете в виду под "удалить попарно", но я отвечу, если вы имеете в виду, что вы будете sh удалять изображение, оканчивающееся на 02F.jpg, одновременно с удалением конца изображения в 02B.jpg, а затем 03F.jpg одновременно с 03B.jpg.

Решение, которое я предлагаю, состоит в том, что мы будем структурировать ваши данные немного по-другому. То есть, если эти изображения, «B-изображение» и «F-изображение» связаны, мы могли бы сохранить их в одном и том же `javascript объекте . Это будет выглядеть так:

var yourPics = [
  {
    bImage: '/app/wp-content/mediaApp/yo-creo-mi-realidad/02F.jpg', 
    fImage: '/app/wp-content/mediaApp/yo-creo-mi-realidad/02B.jpg'
  },
  {
    bImage: '/app/wp-content/mediaApp/yo-creo-mi-realidad/03F.jpg', 
    fImage: '/app/wp-content/mediaApp/yo-creo-mi-realidad/03B.jpg'
  }...]

Это будет массив объектов , а не строк. Мы можем получить доступ к свойству bImage объекта с помощью

myObject = yourPics[0]
myObject.bImage 

. Мы можем удалить один из этих объектов, которые были случайным образом, с помощью splice .

myRandomlyRemovedObject = yourPics.splice(myIndexToDeleteFrom, 1) удалит 1 объект из yourPics в позиции myIndexToDeleteFrom, которую вы, вероятно, выберете случайным образом. myRandomlyRemovedObject будет назначено одному объекту, который мы удалили.

Я думаю, что этот объектный подход более безопасен, поскольку вы точно будете знать, что вы удалили обе соответствующие строки одновременно.

...