#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)
}
Спасибо!