如何在 TypeScript 中对数组进行排序
在 TypeScript 中对 Numbers 数组进行排序
使用 sort()
方法对 TypeScript 中的数组进行排序,例如 numArray.sort((a, b) => a - b)
。 sort 方法采用定义排序顺序的函数作为参数。
在对数值数组进行排序时必须提供该函数,但在对字符串数组进行排序时该函数是可选的。
// ✅ for Numbers
const numArray: number[] = [15, 4, 1, 8];
const sorted1 = numArray.sort((a, b) => a - b);
console.log(sorted1); // 👉️ [1, 4, 8, 15]
// -----------------------------------------------
// ✅ for Strings
const strArray: string[] = ['z', 'c', 'a', 'f'];
const sorted2 = strArray.sort();
console.log(sorted2); // 👉️ ['a', 'c', 'f', 'z']
我们使用 Array.sort
方法对 TypeScript 中的数字和字符串数组进行排序。
sort()
方法对数组的元素进行就地排序并返回排序后的数组。 换句话说,它改变了原始数组。
const numArray: number[] = [15, 4, 1, 8];
const result = numArray.sort((a, b) => a - b);
console.log(result); // 👉️ [1, 4, 8, 15]
console.log(numArray); // 👉️ [1, 4, 8, 15]
如果要对数组进行排序而不改变它们,请在调用 sort()
方法之前使用扩展语法 ...
创建一个浅表副本。
const numArray: number[] = [15, 4, 1, 8];
const sorted1 = [...numArray].sort((a, b) => a - b);
console.log(sorted1); // 👉️ [1, 4, 8, 15]
console.log(numArray); // 👉️ [ 15, 4, 1, 8 ]
// -----------------------------------------------
// ✅ for Strings
const strArray: string[] = ['z', 'c', 'a', 'f'];
const sorted2 = [...strArray].sort();
console.log(sorted2); // 👉️ ['a', 'c', 'f', 'z']
console.log(strArray); // 👉️ [ 'z', 'c', 'a', 'f' ]
在调用排序方法之前,我们使用扩展语法 ...
将数组的值解包到一个新数组中。
这可能是我们想要做的,因为突变可能会造成混淆并且难以在整个代码库中进行跟踪。
在对数值数组进行排序时,我们必须将一个函数传递给 sort()
方法,而对于字符串——我们不需要。
我们传递给该方法的参数是一个定义排序顺序的函数。
如果未向
sort()
提供函数参数,则数组元素将转换为字符串并根据其 UTF-16 代码单元值进行排序。 这不是我们在处理数值数组时想要的,但是,这正是我们在排序字符串数组时想要的。
在 TypeScript 中对对象数组进行排序
我们还可以使用 Array.sort()
方法对 TypeScript 中的对象数组进行排序。
const objArray: { num: number }[] = [
{ num: 15 },
{ num: 4 },
{ num: 1 },
{ num: 8 },
];
const sorted = objArray.sort((obj1, obj2) => {
if (obj1.num > obj2.num) {
return 1;
}
if (obj1.num < obj2.num) {
return -1;
}
return 0;
});
// 👇️ [{num: 1}, {num: 4}, {num: 8}, {num: 15}]
console.log(sorted);
sort()
方法使用以下逻辑对数组中的元素进行排序:
- 如果比较函数的返回值大于0,则将b排序在a之前。
- 如果比较函数的返回值小于0,则将a排在b之前。
- 如果比较函数的返回值等于0,则保持a和b原来的顺序。
我们可以使用相同的方法按字符串属性对对象数组进行排序。
const objArray: { str: string }[] = [
{ str: 'z' },
{ str: 'c' },
{ str: 'a' },
{ str: 'f' },
];
const sorted = objArray.sort((obj1, obj2) => {
if (obj1.str > obj2.str) {
return 1;
}
if (obj1.str < obj2.str) {
return -1;
}
return 0;
});
// 👇️ [{str: 'a'}, {str: 'c'}, {str: 'f'}, {str: 'z'}]
console.log(sorted);
数组中的对象按 str 属性升序排列。
相关文章
在 AngularJs 中设置 Select From Typescript 的默认选项值
发布时间:2023/04/14 浏览次数:78 分类:Angular
-
本教程提供了在 AngularJs 中从 TypeScript 中设置 HTML 标记选择的默认选项的解释性解决方案。
在 Angular 中使用 TypeScript 的 getElementById 替换
发布时间:2023/04/14 浏览次数:153 分类:Angular
-
本教程指南提供了有关使用 TypeScript 在 Angular 中替换 document.getElementById 的简要说明。这也提供了在 Angular 中 getElementById 的最佳方法。
在 TypeScript 中使用 try..catch..finally 处理异常
发布时间:2023/03/19 浏览次数:181 分类:TypeScript
-
本文详细介绍了如何在 TypeScript 中使用 try..catch..finally 进行异常处理,并附有示例。
在 TypeScript 中使用 declare 关键字
发布时间:2023/03/19 浏览次数:97 分类:TypeScript
-
本教程指南通过特定的实现和编码示例深入了解了 TypeScript 中 declare 关键字的用途。
在 TypeScript 中 get 和 set
发布时间:2023/03/19 浏览次数:172 分类:TypeScript
-
本篇文章演示了类的 get 和 set 属性以及如何在 TypeScript 中实现它。
在 TypeScript 中格式化日期和时间
发布时间:2023/03/19 浏览次数:161 分类:TypeScript
-
本教程介绍内置对象 Date() 并讨论在 Typescript 中获取、设置和格式化日期和时间的各种方法。
在 TypeScript 中返回一个 Promise
发布时间:2023/03/19 浏览次数:182 分类:TypeScript
-
本教程讨论如何在 TypeScript 中返回正确的 Promise。这将提供 TypeScript 中 Returns Promise 的完整编码示例,并完整演示每个步骤。
在 TypeScript 中定义函数回调的类型
发布时间:2023/03/19 浏览次数:221 分类:TypeScript
-
本教程说明了在 TypeScript 中为函数回调定义类型的解决方案。为了程序员的方便和方便,实施了不同的编码实践指南。
在 TypeScript 中把 JSON 对象转换为一个类
发布时间:2023/03/19 浏览次数:110 分类:TypeScript
-
本教程演示了如何将 JSON 对象转换为 TypeScript 中的类。