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
相关产品推荐
相关产品推荐

