这篇博文,我们将学习如何在javascript或typescript中对数组进行排序。
我们将学习在typescript中进行排序
- 如何在typescript中对字符串阵列进行排序?
- 如何在javascript中对对象的数组进行排序?
typescript数组类提供了对元素进行排序的方法。
数组排序方法
数组类提供了对数组元素进行升序或降序排序的方法。
元素可以是简单的strings
,包含键和值的Object
,或者是Typescriptclasses
。
语法
Array.sort(ComparatorFunction)
参数是ComparatorFunction
是一个回调函数,它指定了元素的顺序,如果没有传递,将应用默认排序。
如何对字符串数组进行排序 示例
用new Array()声明并初始化数组,字符串用逗号隔开 没有传递比较器函数,使用Array.sort()方法
var arrayStrings = new Array("one", "two", "there", "four");
var sortedArray = arrayStrings.sort();
console.log(""+sortedArray );
输出是
four,one,there,two
如何在Typescript中对Interfaces数组进行排序
对象可以直接用数组来创建,也可以创建一个接口。
这个Emp
对象包含id
和names
。这个例子通过名称属性对对象进行排序。
首先创建Emp
接口。
interface Emp {
id: number;
name: string;
}
接下来,创建对象的数组,并用值进行初始化
var emps: Emp[] = [
{ id: "5", name: "Kiran" },
{ id: "1", name: "Frank" },
{ id: "2", name: "Tom" },
{ id: "51", name: "Abc" }
]
并为Emp
对象的Name
写一个比较函数
var compareName = function (emp1: Emp, emp2: Emp) {
if (emp1.name > emp2.name) { return -1; }
if (emp1.name < emp2.name) {return 1; }
return 0;
}
最后用比较函数调用Array.sort()
var sortedArray = emps.sort(compareName);
console.log(sortedArray );
输出是
0: {id: "2", name: "Tom"}
1: {id: "5", name: "Kiran"}
2: {id: "1", name: "Frank"}
3: {id: "51", name: "Abc"}
object
包含key
date
属性。
我们可以根据date
,以升序或降序对对象数据进行排序。
需要提供处理日期比较的比较器自定义代码。
第一个日期字符串被转换为一个内置的日期对象。
日期升序
这是一个例子,通过日期升序对对象的日期进行排序。
interface Emp {
id: number;
name: string;
date: Date;
}
var emps: Emp[] = [
{ id: "5", name: "Kiran",date:"2018-05-05" },
{ id: "1", name: "Frank",date:"2017-05-05"},
{ id: "2", name: "Tom",date:"2016-05-05" },
{ id: "51", name: "Abc" ,date:"2018-10-05"}
]
var compareDate = function (emp1: Emp, emp2: Emp) {
var emp1Date = new Date(emp1.date).getTime();
var emp2Date = new Date(emp2.date).getTime();
return emp1Date > emp2Date ? 1 : -1;
}
var sortedArray = emps.sort(compareDate);
console.log(sortedArray );
输出是
0: {id: "2", name: "Tom", date: "2016-05-05"}
1: {id: "1", name: "Frank", date: "2017-05-05"}
2: {id: "5", name: "Kiran", date: "2018-05-05"}
3: {id: "51", name: "Abc", date: "2018-10-05"}
我们将看到按降序排序的日期。
对象属性日期降序
var compareDate = function (emp1: Emp, emp2: Emp) {
var emp1Date = new Date(emp1.date).getTime();
var emp2Date = new Date(emp2.date).getTime();
return emp1Date > emp2Date ? -1 : 1;
}
输出是
0: {id: "51", name: "Abc", date: "2018-10-05"}
1: {id: "5", name: "Kiran", date: "2018-05-05"}
2: {id: "1", name: "Frank", date: "2017-05-05"}
3: {id: "2", name: "Tom", date: "2016-05-05"}
UnderscoreJs数组排序实例
UnderscoreJS是一个javascript库,它提供了很多实用功能。
它提供了sortBy函数,接受一个array
和一个function
作为参数。这个库可以使用npm包管理器在javascript或typescript应用程序中使用,可以使用npm命令安装。
下面是一个数组字符串降序排序的例子
var sortedArray=_.sortBy(["four", "one", "zero"], function (value) { return value.toLowerCase(); });
console.log(sortedArray);
输出:
["four","one","zero"]
总结
在本教程中,你学到了数组声明和排序方法的初始化语法,如何用日期键对字符串、对象和接口阵列进行升序或降序排序。