typescript 数组问题中的角随机值

jgwigjjp  于 2022-12-05  发布在  TypeScript
关注(0)|答案(1)|浏览(126)

所以我有一个电影数组我想打印一个随机电影
我试过数学随机题,但出了点问题。有什么想法吗?
Service.ts:

loadData(): Observable<any> {
        return this.http.get<any>(`http://localhost:3004/movies`).pipe(
            map(response => {
                return response;
            })
        )
    };

于飞:

<div  class="container">
       <p *ngFor="let movie of movies"> {{ movie.content }}</p>    </div>
</div>
<button class="next">
    Next
</button>

组件.ts:

export class HomeComponent implements OnInit {

  public movies:any = [];
  constructor(private PagesService: PagesService
  ) { }

  ngOnInit(): void {
    this.loadData()
  };

  loadData() {
    this.PagesService.loadData().subscribe(response => {
      console.log(response)
      this.movies[Math.floor(Math.random() * this.movies.length)];
      //this.movies = response

    })
  };
}

这是我第一次使用数学随机数。我还想在点击“下一步”按钮后,从这个数组中为另一个随机数更改该值。所以我应该在循环或函数中完成所有这些操作,如下所示:我的数组:[ {“编号”:“1”,“类别”:“喜剧”、“内容”:“米莱尔”},{“身份证”:“2”、“类别”:“恐怖”、“内容”:“阴险”}]

rsaldnfx

rsaldnfx1#

若要随机化数组

array.map(x=>({data:x,order:Math.random()}))
     .sort((a,b)=>a.order>b.order?1:a.order<b.order?-1:0)
     .map(x=>x.data)

因此,要使电影数组随机播放,请使用管道Map

return this.http.get<any>(`http://localhost:3004/movies`).pipe(
      map(array=> 
            array.map(x=>({data:x,order:Math.random()}))
           .sort((a,b)=>a.order>b.order?1:a.order<b.order?-1:0)
           .map(x=>x.data)
      ))

然后,第一部电影是“array[0]",第二部电影是“array[1]",...
注意:没有意义使用map(response => { return response}),它是在result中转换结果

相关问题