Knockout Js:可观察数组的 SORT 函数如何工作

Knockout Js: how does the SORT function for an observable array work

我想用敲除排序方法对一个可观察数组进行排序,但根据文档,传递了两个字段。

myObservableArray.sort(function (left, right) { return left.lastName == right.lastName ? 0 : (left.lastName < right.lastName ? -1 : 1) })

左参数和右参数从哪里得到,我是否将它们传递进来,如果我有这样的数组

var dummyArray = [{letter: a, number: 4},{letter: f, number: 3},{letter: t, number: 2},{letter: v, number: 7},{letter: c, number: 9},] 

我该如何排序?

我把它们传进去吗:

不,排序函数会这样做。排序需要比较两个值。所以你需要提供做比较的函数

我该如何排序?:

取决于您希望如何对它们进行排序。通过 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 文档中的描述告诉您的那样:

Your function should accept any two objects from the array and return a negative value if the first argument is smaller, a positive value is the second is smaller, or zero to treat them as equal.

这与 Array.prototype.sort

的行为相同