@ByJumping

Как рандомно перемешать массив?

Есть массив объектов:

export const imagesData = [
    {id: 1, path:  require('./img/image1.jpg')},
    {id: 2, path:  require('./img/image2.jpg')},
    {id: 3, path:  require('./img/image3.jpg')},
    {id: 4, path:  require('./img/image4.jpg')},
    {id: 5, path:  require('./img/image5.jpg')},
    {id: 1, path:  require('./img/image1.jpg')},
    {id: 2, path:  require('./img/image2.jpg')},
    {id: 3, path:  require('./img/image3.jpg')},
    {id: 4, path:  require('./img/image4.jpg')},
    {id: 5, path:  require('./img/image5.jpg')},
]

Чтобы перемешать обычный массив использую функцию

randomItem (items) {
      return items[Math.floor(Math.random()*items.length)];
    }

Мне нужно рандомно отрисовывать картинки, но их id должны остаться такими же.
Но не могу придумать как перемешать элементы объекта, но чтобы id остались неизменны.
  • Вопрос задан
  • 211 просмотров
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
function shuffle(arr) {
    for (let i = arr.length - 1; i > 0; --i) {
        const pos = Math.floor(Math.random() * (i + 1));
        const t = arr[pos];
        arr[pos] = arr[i];
        arr[i] = t;
    }
    return arr;
}

const newArr = shuffle(imagesData.slice()); // новый перемешанный, imagesData не поменялось
const newArr2 = shuffle(imagesData); // перемешали imagesData, присвоили в newArr2
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы