Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-撤消数组排序_Javascript_Arrays_Angular_Sorting_Lodash - Fatal编程技术网

JavaScript-撤消数组排序

JavaScript-撤消数组排序,javascript,arrays,angular,sorting,lodash,Javascript,Arrays,Angular,Sorting,Lodash,我正在整理一张桌子。表数据来自对象数组。我需要能够根据属性对数组进行排序 对象如下所示: { "AbsenceReservationID": 7220, "Name": "DGM", "Code": "ARBEIDSONGEVAL WP", "RequestState": "Goedgekeurd", "From": "2017-03-21T00:00:00+01:00", } 我使用的是lodash,因此我可以使用以下语法轻松地对数组进行排序: asc: 描述: 然而,我在最后的排序方法卡住

我正在整理一张桌子。表数据来自对象数组。我需要能够根据属性对数组进行排序

对象如下所示:

{
"AbsenceReservationID": 7220,
"Name": "DGM",
"Code": "ARBEIDSONGEVAL WP",
"RequestState": "Goedgekeurd",
"From": "2017-03-21T00:00:00+01:00",
}
我使用的是lodash,因此我可以使用以下语法轻松地对数组进行排序:

asc:

描述:

然而,我在最后的排序方法卡住了。我需要能够撤消排序,但我找不到一个好方法来执行此操作。下面是它的工作原理:

  • 第一次单击-排序asc
  • 第二次单击-排序描述
  • 第三次单击-删除排序 在这片土地上
我认为最困难的部分是当用户对多个属性进行排序时,例如


如何删除属性排序?

基本上有三种选择:

  • 不要提供“未排序”选项

  • 记住原始顺序(可能通过为其添加属性),对于“unsorted”选项,按该属性排序

    例如,可以添加
    originalIndex
    属性:

    _.forEach(myArr, function(e, i) { e.originalIndex = i; });
    
    然后
    myArr=u.sortBy(myArr,“originalIndex”)将收回原始订单

  • 将原始数组保留在某个位置(因为
    创建了一个副本),并在需要“未排序”版本时再次使用原始数组


  • 您最初从哪里获取数据?(服务)

    如果它来自服务调用-建议只需重新调用该服务并将数据设置为再次检索的数据

    如果不想再次调用该服务,只需在JS sortingData和unsortedData中创建两个对象。然后,当您使用lodash方法时,只需将其应用于sortingData数组。在第三次单击时,执行以下操作:

    sortingData = unsortedData;
    

    您最初从哪里获取数据?(手动创建)

    拥有两个对象的方法同样适用于这里。创建数据后,在允许进行排序之前,将unsortedData设置为已生成的数据。e、 g

    unsortedData = data;
    

    您可以使用创建原始副本:

    var oldArr = myArr.slice(); // gives you a new copy.
    

    排序后,您可以使用
    oldArr

    您的初始排序是什么(按名称、日期等)?为原始排序添加另一个属性,并使用它还原排序。保留一个包含所有排序的数组properties@giaco没有初始排序atm,它只是打印从API调用接收到的数组,保持原始数组不变(myArr)... 将阵列的副本用于您需要的任何用途(副本)。。。所以,
    copy=myArr.slice()<代码>复制=u.sortBy(myArr.slice(),“Name”)已排序副本。。。你的回答很有帮助。我试着这么做了很长时间,只有你的回答帮了我。非常感谢。
    
    unsortedData = data;
    
    var oldArr = myArr.slice(); // gives you a new copy.