首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >剔除Js:可观察数组的排序功能是如何工作的

剔除Js:可观察数组的排序功能是如何工作的
EN

Stack Overflow用户
提问于 2018-06-22 20:02:59
回答 1查看 1.2K关注 0票数 1

我希望使用剔除排序方法来排序一个可观察的数组,但是根据文档,将传递两个字段。

代码语言:javascript
复制
myObservableArray.sort(function (left, right) { return left.lastName == right.lastName ? 0 : (left.lastName < right.lastName ? -1 : 1) })

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

代码语言:javascript
复制
var dummyArray = [{letter: a, number: 4},{letter: f, number: 3},{letter: t, number: 2},{letter: v, number: 7},{letter: c, number: 9},] 

我该怎么处理呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-22 20:17:54

我要把它们传进去吗?

不,排序函数可以做到这一点。排序需要比较两个值。因此,您需要提供进行比较的函数。

我该怎么处理呢?

取决于你想要怎样分类。由letter?由number?一个接着另一个?被别的什么东西?你必须提供做它的功能。

因此,对于按number升序排序:

代码语言:javascript
复制
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())
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>

正如Knockout文档中的描述所告诉您的:

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

这是与Array.prototype.sort相同的行为

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50994876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档