不明白:“排序((a:文章,b:文章)=> b.votes - a.votes);”

时间:2016-11-07 19:44:58

标签: javascript sorting angular typescript

我不理解sortedArticles()中的return语句。可以将我指向一个链接,或解释这种排序功能如何工作?

sortedArticles(): Article[] {
    return this.articles.sort((a: Article, b: Article) => b.votes - a.votes);
}
<div class="ui grid posts">
  <app-article
    *ngFor="let article of sortedArticles()"
    [article]="article">
  </app-article>
</div>

可能是一个微不足道的问题,但由于某种原因无法在线找到答案。感谢帮助。

1 个答案:

答案 0 :(得分:2)

好的,让我们为你打破......

sortedArticles(): Article[] {
    return this.articles.sort((a: Article, b: Article) => b.votes - a.votes);
}

(a: Article, b: Article) => b.votes - a.votes - 这相当于 function(a, b) { return b.votes - a.votes },并将返回正确的值,以便sort()能够重新排序数组元素。如果第一篇文章(a)有更多的选票,它将返回一个负值;如果两篇文章的票数相同,则返回0;如果第二篇文章(b)有更多选票,它将返回一个正数。

some_array.sort()将函数作为其参数。这可以是命名函数,也可以是像这里所做的匿名函数。它将遍历数组并将两个元素传入函数,以确定它们是否应该交换或保持该顺序。如果函数返回负值,则第一项应该在第二项之前;如果函数返回正值,则第二个项应该在第一个之前;如果函数返回0,那么它们的权重相等,而且它们的顺序并不重要 - 在这种情况下sort()通常会将它们置于原始顺序中。

因此,调用sortedArticles()将返回一个文章列表,按照多少&#34;投票&#34;他们每个人都有。