按内部的另一个对象值对对象排序

时间:2015-08-31 11:01:33

标签: actionscript-3 sorting flex actionscript

这里有一些复杂的排序在我的应用程序中。

现在我的数据对象如下(称为pCList):

Object[0]:
  Id: 1
  comp: Test
  med: xyz
  condition: valueObject.Condition

Object[1]:
  Id: 2
  comp: Test1
  med: pqr
  condition: valueObject.Condition

Object[2]:
  Id: 3
  comp: Test
  med: abc
  condition: valueObject.Condition

condition VO拥有以下数据:

condition data1:
  conId: 001
  cond: abcds

condition data2:
  conId: 001
  cond: trdfd  

condition data3:
  conId: 001
  cond:  dsdsds

对于正常排序,我将按以下方式进行;

var sort:ISort = new Sort();
var sortField:ISortField = new SortField("med");
sort.fields = [sortField];

if(pCList != null)
{
    pCList.sort = sort;
    pCList.refresh();
}

其中pcList按医学排序。

但现在,我想按condition.cond排序
首先来的是condabcds然后dsdsds然后是trdfd等等......

我尝试过使用:

var sort:ISort = new Sort();
var sortField:ISortField = new SortField("condition.cond");
sort.fields = [sortField];

但没有成功。任何帮助是极大的赞赏。

1 个答案:

答案 0 :(得分:1)

ISort有一个属性compareFunction,可用于自定义排序。见下面的例子。

var sort:ISort = new Sort();
sort.compareFunction = function(a:Object, b:Object, fields:Array = null):int {
    var conditionA:String = a.Condition.cond;
    var conditionB:String = b.Condition.cond;
    if (conditionA < conditionB) {
        return -1;
    } else if (conditionA > conditionB) {
        return 1;
    } else {
        return 0;
    }
};