在 TypeScript 中排序数组

Muhammad Maisam Abbas 2023年1月30日
  1. 在 TypeScript 中使用 sort() 方法对数组进行排序
  2. 在 TypeScript 中对数字数组进行排序
  3. 在 TypeScript 中对对象数组进行排序
在 TypeScript 中排序数组

TypeScript 允许对数组进行不同的操作,排序是其中一种操作。本教程将讨论 typescript 中数组的排序。

在 TypeScript 中使用 sort() 方法对数组进行排序

排序是使用 sort() 方法完成的。此方法对数组中存在的元素进行排序,并将排序后的字符串元素作为输出返回给用户。

sort() 方法默认按升序返回结果。数组类型定义为 string[]

例子:

const myArray: string[] = ['A', 'B', 'D', 'X', 'C', 'F'];
myArray.sort();

console.log(`My sorted array is = ${myArray}`);

输出:

My sorted array is = A,B,C,D,F,X

sort() 方法返回字符串数组,数组元素按字母顺序给出作为输出。现在让我们再举一个字符串数组的例子。

例子:

const myFruits: string[] = ['Apple', 'Peach', 'Strawberry', 'Banana', 'Mango'];
myFruits.sort();

console.log(`My sorted fruits is = ${myFruits}`);

输出:

My sorted fruits is = Apple,Banana,Mango,Peach,Strawberry

请注意,所有水果均按字母顺序排序。

在 TypeScript 中对数字数组进行排序

在 TypeScript 中对数字数组进行排序并不像上面看起来那么简单,因为 sort() 方法返回字符串数组。执行逻辑运算以按升序和降序对数值数组进行排序。

例子:

const numArray: number[] = [6,5,8,2,1];
numArray.sort();

console.log(`The sorted numebrs are = ${numArray}`);

输出:

The sorted numebrs are = 1,2,5,6,8

上面的例子可以正常工作,但是如果我们添加一个最后一位为 0 的两位或三位数字会发生什么。让我们举个例子。

例子:

const numArray: number[] = [60,5,8,2,1];
numArray.sort();

console.log(`The sorted numebrs are = ${numArray}`);

输出:

The sorted numebrs are = 1,2,5,60,8

上面的代码片段表明,即使 60 大于 8,它仍然排在第一位,因为 sort() 方法返回一个字符串数组。在字符串比较中,608 之前。

为了解决这个问题,我们必须在 sort() 方法中使用一个比较函数,这个函数将决定我们是要按升序还是降序排列数组。

例子:

const numArray: number[] = [60,5,8,2,1];
numArray.sort(function(x,y) {
    return x-y
});

console.log(`The sorted numebrs are = ${numArray}`);

输出:

The sorted numebrs are = 1,2,5,8,60

结果以升序显示。要按降序显示结果,请按照以下示例进行操作。

例子:

const numArray: number[] = [60,5,8,2,1];
numArray.sort(function(x,y) {
    return y-x
});

console.log(`The sorted numebrs are = ${numArray}`);

输出:

The sorted numebrs are = 60,8,5,2,1

现在结果以降序显示。function(x,y) 根据我们是否希望数字按升序或降序排列的逻辑进行操作。

在 TypeScript 中对对象数组进行排序

TypeScript 允许我们对数组中的对象进行排序。

例子:

var numArray: { num: number; }[] = [{ num: 7}, { num: 9 }, {num: 3}, {num: 6}, {num: 1}];

numArray.sort(function(x,y) {
    if (x.num > y.num) {
        return 1;
    }

    if (x.num < y.num) {
        return -1;
    }
    return 0;
});
console.log('The sorted array of objects is as follow:');
console.log(numArray);

输出:

The sorted array of objects is as follow:
[{
  "num": 1
}, {
  "num": 3
}, {
  "num": 6
}, {
  "num": 7
}, {
  "num": 9
}]

代码示例显示了已排序的对象数组。在条件中,return 1 表明第一个在第二个之后。

return -1 表示第一次在第二次之前,return 0 表示它们是相等的。结果以升序显示。

要按降序获得结果,请将条件中的 -1 替换为 1,反之亦然。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

相关文章 - TypeScript Array