Flex 对集合的多个字段进行排序

 

Flex 对集合的多个字段进行排序

关键字: flex, 排序, 日期排序

因为数组可被多个SortFields 排序,Sort 对象的fields 属性就是一个数组。这些sort 创建一
个层级的结构,所有对象进行分组排序,先根据field 属性里的第一个SortField 对象,再第
一个,以此类推。这个例子代码先根据regions 再states 对集合进行排序:

 

coll = new ArrayCollection{[{city:"Cleveland", state:"Ohio", region:"East"},{city:"Sacramento", state:"California", region:"West"},{city:"Atlanta",state:"Georgia", region:"South"},{city:"Columbus", state:"Ohio", region:"East"}]);
var sort:Sort = new Sort();
sort.fields = [new SortField("region"), new SortField("state")];
coll.sort = sort;
coll.refresh();

 

 

对集合的日期类型数据进行排序,使用mx.utils.ObjectUtil 类的dateCompare 方法比较日期。

ObjectUtil 类提供一个dateCompare 方法用于检测两个Date 对象哪个更早。你可以用
ObjectUtil.dateCompare 方法来比较两个日期的大小。dateCompare 方法返回1, 0, 或
-1:如果值为null 或相等返回0,如果第一个值为null 或小于第二个值返回1,如果第二个值
为null 或小于第一个值返回-1:

 

import mx.collections.Sort; import mx.collections.ArrayCollection; import mx.utils.ObjectUtil; private function sortFunction(a:Object, b:Object, fields:Array = null):int { var tempDateA:Date = new Date(Date.parse(a.dob)); var tempDateB:Date = new Date(Date.parse(b.dob)); return ObjectUtil.dateCompare(tempDateA, tempDateB); } private var arrColl:ArrayCollection; private function init():void { arrColl = new ArrayCollection([{name:"Josh",dob:"08/17/1983"},{name:"John",dob:"07/30/1946"},{name:"John", dob:"07/30/1990"},{name:"John",dob:"07/30/1986"}]); var sort:Sort = new Sort(); sort.compareFunction = sortFunction; arrColl.sort = sort; arrColl.refresh(); trace(arrColl); }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在JavaScript中,您可以使用`Array.sort()`方法和自定义比较函数来根据N个字段进行排序。您可以按照以下步骤编写代码: 1. 定义一个包含要排序对象的数组 2. 定义一个比较函数,该函数接收两个参数,分别代表要比较的对象 3. 在比较函数中,按照需要的字段进行排序,如果字段相同,则按照下一个字段进行排序。最后,返回一个数字,表示两个对象的相对顺序 4. 使用`Array.sort()`方法对数组进行排序,传递比较函数作为参数 以下是一个示例代码,演示如何根据三个字段进行排序: ``` var persons = [ { name: "John", age: 25, city: "New York" }, { name: "Peter", age: 30, city: "London" }, { name: "Mary", age: 28, city: "Paris" }, { name: "David", age: 25, city: "New York" } ]; function compare(a, b) { if (a.city < b.city) { return -1; } if (a.city > b.city) { return 1; } if (a.age < b.age) { return -1; } if (a.age > b.age) { return 1; } if (a.name < b.name) { return -1; } if (a.name > b.name) { return 1; } return 0; } persons.sort(compare); console.log(persons); ``` 在这个例子中,我们定义了一个名为 `persons` 的数组,其中包含四个对象。每个对象都有三个属性:`name`,`age`和`city`。然后,我们定义了一个名为 `compare` 的自定义函数,该函数按照 `city`,`age` 和 `name` 字段的顺序进行排序。最后,我们使用 `persons.sort(compare)` 方法对 `persons` 数组进行排序,并使用 `console.log()` 函数输出排序后的数组。 您可以根据需要修改比较函数以实现不同的排序需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值