You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中如何按rating降序排序Movie对象数组?

TypeScript中按rating降序排序Movie数组的方法

嘿,这个问题其实挺容易解决的!因为TypeScript是JavaScript的超集,数组排序的逻辑和JS完全一致,咱们直接用数组内置的sort()方法就能搞定你要的按rating降序排列的需求~

核心实现代码

因为你已经明确所有变量都不为空值,所以不需要额外处理空值判断,直接写比较逻辑就行:

// 假设你已有movies数组:const movies: Movie[] = [...]
// 创建原数组的浅拷贝并按rating降序排序(避免修改原数组)
const sortedMovies = [...movies].sort((a, b) => b.rating - a.rating);

代码解释

  • [...movies]:这是ES6的扩展语法,用来创建原数组的浅拷贝。如果你不需要保留原数组的顺序,直接调用movies.sort(...)也可以,但通常推荐不修改原数组,避免后续逻辑出现意外。
  • sort((a, b) => b.rating - a.rating):sort()方法接受一个比较函数,规则是:
    • 当返回值为正数时,b会排在a的前面
    • 当返回值为负数时,a会排在b的前面
      用b.rating - a.rating刚好能实现rating值从高到低的降序排列。

完整示例(包含Movie类和测试数据)

export class Movie {
  name: string;
  year: number;
  rating: number;

  // 可选:给Movie类加个构造函数方便创建实例
  constructor(name: string, year: number, rating: number) {
    this.name = name;
    this.year = year;
    this.rating = rating;
  }
}

// 测试用的movies数组
const movies: Movie[] = [
  new Movie("星际穿越", 2014, 9.4),
  new Movie("盗梦空间", 2010, 9.3),
  new Movie("蝙蝠侠:黑暗骑士", 2008, 9.2),
  new Movie("致命魔术", 2006, 8.9)
];

// 执行排序
const sortedByRatingDesc = [...movies].sort((a, b) => b.rating - a.rating);

// 打印结果验证
console.log(sortedByRatingDesc);
// 输出顺序:星际穿越 → 盗梦空间 → 蝙蝠侠:黑暗骑士 → 致命魔术

如果之后需要升序排列,只需要把比较函数改成a.rating - b.rating就可以啦!

内容的提问来源于stack exchange,提问作者Ebenezer Isaac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 13:08:10