在本教程中,你将学习如何在typescript中用键或属性对对象阵列进行排序。
对象持有一个真实实体的键和值。对象数组是一个对象的列表。
用比较逻辑对数组对象进行排序
下面是一个用id属性对对象数组进行升序排序的例子
var countries = [
{ id: 1, name: 'USA' },
{ id: 2, name: 'India' },
{ id: 3, name: 'Canada' }
];
let sortedCountries = countries.sort((first, second) => 0 - (first.id > second.id ? -1 : 1));
console.log(sortedCountries);
输出是
[ { id: 1, name: 'Canada' },
{ id: 18, name: 'USA' },
{ id: 21, name: 'India' } ]
这里是一个example array object ordered in descending
let descendingCountries = countries.sort((first, second) => 0 - (first.id > second.id ? 1 : -1));
这里是输出
[ { id: 21, name: 'India' },
{ id: 18, name: 'USA' },
{ id: 1, name: 'Canada' } ]
lodash sortBy对象的关键字符串
Lodash库提供了许多实用的功能。sortBy 是对数组进行排序的方法之一。
首先,安装语法
sortBy(array or objects,[iteratekeys])
输入是数组或对象的迭代键,以便进行排序。
返回是排序后的数组
下面是一个example for sort object with key values of an object array in ascending order 。
- 导入所有的实用程序,使用
import keyword - 一个动物对象有键ID、名称和它的值
- 声明的动物数组用动物对象进行初始化
sortBy in lodash方法接受带键的对象数组- 返回一个按id/name升序排序的对象数组
import * as _ from 'underscore';
var animals = [
{ id: 11, name: 'Zebra' },
{ id: 2, name: 'Elephant' },
{ id: 3, name: 'Cat' }
];
_.sortBy(animals, ['name']);// sort by key name
_.sortBy(animals, ['id']);// sort by key id
输出是
[Object {id: 3, name: "Cat"}, Object {id: 2, name: "Elephant"}, Object {id: 1, name: "Zebra"}]
[Object {id: 2, name: "Elephant"}, Object {id: 3, name: "Cat"}, Object {id: 11, name: "Zebra"}]
在一个example for sort object array with multiple fields
sortBy第二个参数接受迭代键,请给出多个键
_.sortBy(animals, ['id','name']);
_.sortBy(animals, ['name','id']);
第一个属性被考虑,如果第一个属性有相同的值,那么在第二个属性上对相同的值进行排序,请看区别。
输出结果是
[Object {id: 2, name: "Elephant"}, Object {id: 3, name: "Cat"}, Object {id: 11, name: "Zebra"}]
[Object {id: 3, name: "Cat"}, Object {id: 2, name: "Elephant"}, Object {id: 11, name: "Zebra"}]
和lodash 库一样,underscoreJS 为npm应用程序提供了许多实用的函数。sortBy 函数在underscore中提供了对具有多个属性的数组对象的排序。Lodash sortBy
在下面的例子中,一个对象包含有创建日期和时间的属性,这个排序是基于创建日期。
var employees = [
{ id: 18, name: 'Johh', created: '2020-08-1 07:12:10.0' },
{ id: 21, name: 'Frank', created: '2019-08-1 07:12:10.0', },
{ id: 1, name: 'Eric', created: '2018-08-1 07:12:10.0', }
];
_.sortBy(employees, ['created']);
而输出结果是
0: Object {created: "2018-08-1 07:12:10.0", id: 1, name: "Eric"}
1: Object {created: "2019-08-1 07:12:10.0", id: 21, name: "Frank"}
2: Object {created: "2020-08-1 07:12:10.0", id: 18, name: "Johh"}
总结
在这篇博文中,你学到了多种方法来对一个对象数组进行排序,这些方法包括
- 用键值比较对象字段
- Lodash对具有多个属性的数组对象进行排序
- 用对象日期值进行Underscorejs排序