Как я могу отобразить случайную позицию массива в typescript?

#angular #typescript #api

#angular #typescript #API

Вопрос:

Я создал метод, который захватывает массив и выбирает случайную позицию. Я хочу отобразить одну или несколько случайных позиций. Я использую директиву *ngFor для отображения всей позиции моего массива, но я понятия не имею, как я могу отобразить эту случайную позицию;

 listComics() {
    this.comicsService.getComics().subscribe(
      comicsList => {
        this.comics = comicsList.data.results;
        this.rareComics = comicsList.data.results[Math.floor(Math.random() * this.comics.length)]
        console.log(this.comics);
    });
  }

 

и вот как отобразить массив

 
<div class="col-md-3" *ngFor="let comic of comics">
      <div class="col">
        <img [src]="comic.thumbnail.path   '/portrait_uncanny.'   comic.thumbnail.extension" id="img"
          (click)="onSelect(comic)">
      </div>
      <div class="col">
        <h5 class="title">{{comic.title}}</h5>
      </div>
    </div>
 

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

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

2. Вы правы. Я устал и забыл об интерполяции. Теперь у меня есть еще один вопрос по этому поводу.

Ответ №1:

Вот небольшая функция, которая послужит вашей цели

 function listRandomComics(comics){
    var radomLength = Math.floor(Math.random()*comics.length)
    var randomArray = []
    for(var i=0; i<=radomLength; i   ){
        var randomIndex = Math.floor(Math.random()*comics.length)
        randomArray.push(comics[randomIndex])
        comics.splice(randomIndex, 1)
    }
    console.log(randomArray)
}
 

И в ES6

 listRandomComics(){
    let arr = [...this.comics]
    let randomLength = Math.floor(Math.random()*arr.length)
    let randomArray = []
    while(randomLength){
        let randomIndex = Math.floor(Math.random()*arr.length)
        randomArray.push(arr[randomIndex])
        arr.splice(randomIndex, 1)
        randomLength--
    }
    console.log(randomArray)
}
 

Спасибо!