JavaScript - 撤消数组的排序

标签 javascript arrays angular sorting lodash

我正在制作一个可排序的表格。表数据来自对象数组。我需要能够根据属性对数组进行排序

一个对象看起来像这样:

{
"AbsenceReservationID": 7220,
"Name": "DGM",
"Code": "ARBEIDSONGEVAL WP",
"RequestState": "Goedgekeurd",
"From": "2017-03-21T00:00:00+01:00",
}

我正在使用 lodash,因此我可以使用以下语法轻松对数组进行排序:

升序:

myArr = _.sortBy(myArr , "Name");

描述:

myArr = _.sortBy(myArr , "Name").reverse;

但是我陷入了最后一种排序方法。我需要能够撤消排序,但我找不到一个好方法来做到这一点。其工作原理如下:

  • 第一次点击 - 按升序排序
  • 第二次点击 - 对描述进行排序
  • 第三次点击 - 删除排序 在此属性上

我认为困难的部分是当用户对多个属性进行排序时,例如

如何实现属性排序的删除?

最佳答案

你基本上有三个选择:

  1. 不要提供“未排序”选项

  2. 记住原始顺序(也许通过为其添加属性),对于“未排序”选项,按该属性排序

    例如,您可以添加 originalIndex 属性:

    _.forEach(myArr, function(e, i) { e.originalIndex = i; });
    

    然后 myArr = _.sortBy(myArr, "originalIndex"); 将获取原始订单。

  3. 将原始数组保留在某处(因为 _.sortBy 创建副本),并在需要“未排序”版本时再次使用原始数组

关于JavaScript - 撤消数组的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43227090/

相关文章:

angular - 如何在完成之前停止动画?

javascript - 对 Angular 中具有嵌套子对象的对象数组进行排序 (7)

templates - 在 Angular 2 的 html 模板中引用服务是一种好习惯吗?

javascript - 从Google表单提交按钮运行Google表格脚本

javascript - 使用javascript删除特定字符串的数据

javascript - Ember-Data - 从路由器到 Controller 的对象

python - 如何检查矩阵是否在矩阵列表中 Python

c - 添加两个大数字作为字符串

javascript - angularjs 过滤器 |不过滤所有对象属性

java - 添加大小到私有(private)数组 - java