前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 JavaScript 中对数组进行排序

在 JavaScript 中对数组进行排序

原创
作者头像
腾龙
修改2022-06-02 10:35:42
4.8K0
修改2022-06-02 10:35:42
举报
文章被收录于专栏:边城码农

排序是您在学习JavaScript时将使用的众多基本方法之一。让我们回顾一下如何对不同的数据类型使用排序方法。


字符串 默认情况下, 排序方法按字母顺序组织其元素。

代码语言:javascript
复制
const names = ['Sophie', 'Fletcher', 'Emmy', 'Izzy', 'Cooper']

const sortNames = names.sort()

console.log(sortNames)

//['Cooper', 'Emmy', 'Fletcher', 'Izzy', 'Sophie']

我们也可以很容易地以相反的顺序对这个数组进行排序!

代码语言:javascript
复制
const reversedNames = sortNames.reverse()

console.log(reversedNames)

// ['Sophie', 'Izzy', 'Fletcher', 'Emmy', 'Cooper']

数字 在对数字进行排序时,我们使用回调函数来处理值的比较。

代码语言:javascript
复制
const nums = [10, 855, 31, 2, 930, 430, 529, 59]

const sortedNums = numbers.sort((a, b) => a - b)

console.log(sortedNums)

//[2, 10, 31, 59, 430, 529, 855, 930]

带数字 的字符串 当字符串的注入数字小于 10 时,此示例适用。(在后面的示例中,此示例将有一个更广泛的版本!在此示例中,我们将使用 slice() 并将带有注入数字的字符串转换为数字。这样,我们就可以对所有数组元素进行排序,其中每个元素都是相同的数据类型。

代码语言:javascript
复制
const library = ['Book 1', 'Book 6', 'Book 2', 'Book 4', 'Book 3', 'Book 5']

const sortedLibrary = library.sort((a, b) => {
return +a.slice(-1) - +b.slice(-1)
})

console.log(sortedLibrary)
// ['Book 1', 'Book 2', 'Book 3', 'Book 4', 'Book 5', 'Book 6']

带有长数字的字符串

对于大于9的数字,这里有一种使用正则表达式的方法来根据它们的值查找元素并排序。

在本例中,我们将使用正则表达式。

正则表达式(Regex)是组成搜索模式的字符序列。搜索模式可用于文本搜索和文本替换操作。

(当第一次面对Regex时,它真的很吓人。我个人还是觉得很困惑。撇开外观不讲,它是一种高可用性和强大的代码类型,在许多情况下都很有用。)

让我们先来分解一下正则表达式的样子:

代码语言:javascript
复制
const coolRegex = /\d+/
  • coolRegex中的第一个和最后一个代表表达式的边界。 /
  • \d 代表数字
  • +意味着, ' 1次或以上'

所以,总的来说,正则表达式使我们能够找到大于9的元素并对数组中的元素进行排序。

让我们进入完整的例子:

代码语言:javascript
复制
const coolRegex = /\d+/;

const longLibrary = [
    'Book 339',
    'Book 868',
    'Book 23',
    'Book 90',
    'Book 5', 
    'Book 41',
    'Book 375'

]

const sortedLibrary = longLibrary.sort((a, b) => {
   return a.match(coolRegex) - b.match(coolRegex)
})

console.log(sortedLibrary)

//['Book 5', 'Book 23', 'Book 41', 'Book 90', 'Book 339', 'Book 375', 'Book 868']

为了进一步理解正则表达式的语法,我将在本文末尾提供资源!


对象 对于对象,我们将按对象的 id 值对此数组进行排序

代码语言:javascript
复制
const users = [
 {id: 4, name: 'Jared' },
 {id: 8, name: 'Nicolette'},
 {id: 2, name: 'Michael'},
 {id: 5, name: 'Sade'},
 {id: 9, name: 'Megan'},
 {id: 1, name: 'Giovanni'},
]

const sorted = users.sort((a, b) => {
 return a.id - b.id 
})


console.log(sorted)

/*
 {id: 1, name: 'Giovanni'}
 {id: 2, name: 'Michael'}
 {id: 4, name: 'Jared'}
 {id: 5, name: 'Sade'}
 {id: 8, name: 'Nicolette'}
 {id: 9, name: 'Megan'}
*/

个人笔记: 正则表达式真的很酷,但到目前为止,在我的职业生涯中,我还没有亲自使用它。在大多数情况下,我看到人们使用正则表达式来简化算法和数据类型问题。如果您在日常任务中使用正则表达式,请告诉我!我很想知道你过去是如何学习的和资源的。

但对于阅读本文的初学者,请不要担心。尝试吸收你能吸收的东西,但不要感到学习正则表达式一切的压力!只需尝试了解示例中使用的正则表达式的细分。

正则表达式资源:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Character_Classes

https://www.computerhope.com/unix/regex-quickref.htm

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档