我想使用剔除排序方法对一个可观察的数组进行排序,但是根据文档,传递了两个字段。
java.time
从哪里获得了left和right参数,是否将它们传递给我,如果我有一个像这样的数组
myObservableArray.sort(function (left, right) { return left.lastName == right.lastName ? 0 : (left.lastName < right.lastName ? -1 : 1) })
我该如何排序?
答案 0 :(得分:2)
我可以通过它们吗:
否,排序功能将执行此操作。排序需要比较两个值。因此,您需要提供进行比较的功能
我该如何排序?:
取决于您要如何对它们进行排序。通过letter
?通过number
?一个然后另一个?还有别的吗?您必须提供执行该功能的功能。
因此,以number
升序进行排序:
var dummyArray = [{letter: "a", number: 4},{letter: "f", number: 3},{letter: "t", number: 2},{letter: "v", number: 7},{letter: "c", number: 9}];
var koArray = ko.observableArray(dummyArray);
koArray.sort(function(l,r) { return l.number === r.number ? 0 : l.number < r.number ? -1 : 1; });
console.log(koArray())
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
Knockout文档中的说明告诉您:
相同您的函数应该接受数组中的任何两个对象,如果第一个参数较小,则为负值;第二个参数较小,则为正值;或者将它们视为相等,则返回零。