如何在typescript中用键或属性对对象阵列进行排序

754 阅读3分钟

在本教程中,你将学习如何在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排序