淘汰赛Js:SORT如何作用于可观察的阵列

时间:2018-06-22 20:02:59

标签: knockout.js

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

java.time

从哪里获得了left和right参数,是否将它们传递给我,如果我有一个像这样的数组

myObservableArray.sort(function (left, right) { return left.lastName == right.lastName ? 0 : (left.lastName < right.lastName ? -1 : 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文档中的说明告诉您:

  

您的函数应该接受数组中的任何两个对象,如果第一个参数较小,则为负值;第二个参数较小,则为正值;或者将它们视为相等,则返回零。

这与Array.prototype.sort

相同