排序是您在学习JavaScript时将使用的众多基本方法之一。让我们回顾一下如何对不同的数据类型使用排序方法。
字符串 默认情况下, 排序方法按字母顺序组织其元素。
const names = ['Sophie', 'Fletcher', 'Emmy', 'Izzy', 'Cooper']
const sortNames = names.sort()
console.log(sortNames)
//['Cooper', 'Emmy', 'Fletcher', 'Izzy', 'Sophie']
我们也可以很容易地以相反的顺序对这个数组进行排序!
const reversedNames = sortNames.reverse()
console.log(reversedNames)
// ['Sophie', 'Izzy', 'Fletcher', 'Emmy', 'Cooper']
数字 在对数字进行排序时,我们使用回调函数来处理值的比较。
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() 并将带有注入数字的字符串转换为数字。这样,我们就可以对所有数组元素进行排序,其中每个元素都是相同的数据类型。
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时,它真的很吓人。我个人还是觉得很困惑。撇开外观不讲,它是一种高可用性和强大的代码类型,在许多情况下都很有用。)
让我们先来分解一下正则表达式的样子:
const coolRegex = /\d+/
/
\d
代表数字+
意味着, ' 1次或以上'所以,总的来说,正则表达式使我们能够找到大于9的元素并对数组中的元素进行排序。
让我们进入完整的例子:
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 值对此数组进行排序
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
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。