迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > TypeScript >

如何在 TypeScript 中对数组进行排序

作者:迹忆客 最近更新:2023/02/20 浏览次数:

在 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 属性升序排列。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 TypeScript 中返回一个 Promise

发布时间:2023/03/19 浏览次数:182 分类:TypeScript

本教程讨论如何在 TypeScript 中返回正确的 Promise。这将提供 TypeScript 中 Returns Promise 的完整编码示例,并完整演示每个步骤。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便