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
- 第二次单击-排序描述
- 第三次单击-删除排序 在这片土地上
如何删除属性排序?基本上有三种选择:
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.