我正在制作一个可排序的表格。表数据来自对象数组。我需要能够根据属性对数组进行排序
一个对象看起来像这样:
{
"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;
但是我陷入了最后一种排序方法。我需要能够撤消排序,但我找不到一个好方法来做到这一点。其工作原理如下:
- 第一次点击 - 按升序排序
- 第二次点击 - 对描述进行排序
- 第三次点击 - 删除排序 在此属性上
我认为困难的部分是当用户对多个属性进行排序时,例如
如何实现属性排序的删除?
最佳答案
你基本上有三个选择:
不要提供“未排序”选项
记住原始顺序(也许通过为其添加属性),对于“未排序”选项,按该属性排序
例如,您可以添加
originalIndex
属性:_.forEach(myArr, function(e, i) { e.originalIndex = i; });
然后
myArr = _.sortBy(myArr, "originalIndex");
将获取原始订单。将原始数组保留在某处(因为
_.sortBy
创建副本),并在需要“未排序”版本时再次使用原始数组
关于JavaScript - 撤消数组的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43227090/