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.
的行为相同
我想用敲除排序方法对一个可观察数组进行排序,但根据文档,传递了两个字段。
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.