Nic*_*las 1 javascript arrays sorting lodash angular
我正在制作一个可排序的表格。表数据来自对象数组。我需要能够根据属性对数组进行排序
一个对象看起来像这样:
{
"AbsenceReservationID": 7220,
"Name": "DGM",
"Code": "ARBEIDSONGEVAL WP",
"RequestState": "Goedgekeurd",
"From": "2017-03-21T00:00:00+01:00",
}
Run Code Online (Sandbox Code Playgroud)
我正在使用lodash,因此我可以使用以下语法轻松对数组进行排序:
升序:
myArr = _.sortBy(myArr , "Name");
Run Code Online (Sandbox Code Playgroud)
描述:
myArr = _.sortBy(myArr , "Name").reverse;
Run Code Online (Sandbox Code Playgroud)
但是我坚持使用最后一种排序方法。我需要能够撤消排序,但我想不出一个好的方法来做到这一点。这是它的工作原理:
我认为困难的部分是当用户对多个属性进行排序时,例如
我怎样才能实现这种属性排序的删除?
你基本上有三个选择:
不要提供“未分类”选项
记住原始顺序(可能通过为其添加属性),对于“未排序”选项,对该属性进行排序
例如,您可以添加一个originalIndex属性:
_.forEach(myArr, function(e, i) { e.originalIndex = i; });
Run Code Online (Sandbox Code Playgroud)
然后myArr = _.sortBy(myArr, "originalIndex");将取回原始订单。
将原始数组保留在某处(因为_.sortBy创建了副本),并在需要“未排序”版本时再次使用原始数组
您可以使用以下方法创建原始副本:
var oldArr = myArr.slice(); // gives you a new copy.
Run Code Online (Sandbox Code Playgroud)
整理后即可使用oldArr。