在 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