订购Json对象

时间:2017-08-22 23:16:40

标签: json angular http get

我正在使用Angular 4创建一个简单的电影列表应用。我正在发出一个HTTP GET请求来获取存储在json文件中的所有电影。他们有一些字段,如“Id”,“标题”,“类型”,“持续时间”等。当我列出所有电影时,我如何通过ID降序来订购它们,以便最后一个出现?< / p>

这是我用来获取这个json数据的代码:

在我的数据服务文件中:

getMovies(){
      return this.http.get('assets/data/movies.json')
      .map(res => res.json());
   }

在我的component.ts文件中:

export class MainComponent implements OnInit {
  movies: Movies[];
  username:string;
  userimg:string;

  constructor(private userService:UserService, private dataService:DataService) { }

  ngOnInit() {

    this.dataService.getMovies().subscribe((movies) =>{
        this.movies = movies;
    });


  }


}

interface Movies {
    id:number,
    title:string,
    year:number,
    rating:number,
    cover:string,
    genre:string,
    duration:string,
    description:string,
    favourite:number
}

在我的component.html文件中:

<div *ngFor="let movie of movies" class="row row-movies">
              <a [routerLink]="['/movies', {'id': movie.id}]">
                <div class="col-md-9">
                    <h3> {{movie.title}}</h3>
                    <h4> {{movie.year}}</h4>
                    <h4> {{movie.rating}}</h4>
                    <p>{{movie.description}}</p>
                    <h5> {{movie.genre}}</h5>
                    <h5> {{movie.duration}}</h5>
                </div>
                <div class="col-md-3">
                  <img src="../assets/img/capas/movies/{{movie.capa}}" class="img-responsive capa-filme" width="350px" />
                </div>
              </a>
      </div>
你能帮帮我吗?我仍然非常喜欢Angular ..

2 个答案:

答案 0 :(得分:3)

这个问题与角度无关。加载电影后,你需要这样做:

this.movies.sort((a,b) => (b.id - a.id));

作为注释:这可以使用vanilla javascript中的任何数组。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

答案 1 :(得分:1)

如果您不需要更改排序,则可以在检索数据时执行此操作。

this.dataService.getMovies().subscribe((movies) =>{
        movies.sort((a, b) => {
           return a.id < b.id ? 1 : -1;
     });
     this.movies = movies;
 });

注意:我没有语法检查。