使用QuerySort

Jam*_*ler 4 coldfusion closures coldfusion-2016

我正在尝试使用ColdFusion 2016查询排序

我基于雷蒙德·卡姆登的阵列排序

http://www.raymondcamden.com/2012/08/14/Another-ColdFusion-10-Closures-Post/

<cfscript>
    qryTest = QueryNew("ID,Name");
    qryTest.AddRow([ 
        {id=1,name="One"}, 
        {id=2,name="Two"}, 
        {id=3,name="Three"}, 
        {id=4,name="Four"} 
    ]);
    qryTest.sort(function(a, b) {
       return a.name > b.name;
    });
    writedump(qryTest);
</cfscript>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这是一个错误还是我做错了?或者是排序成员函数不一样QuerySort()

https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-mr/querysort.html#main-pars_header

RRK*_*RRK 6

Ray的例子是CF10 测试版.看到这个评论.在CF10 +版本中,比较器必须返回1,0或-1.

用这个.这样做a.name > b.name只需返回true/ false.你需要返回1/ -1.

<cfscript>
    qryTest = QueryNew("ID,Name");
    qryTest.AddRow([ 
        {id=1,name="One"}, 
        {id=2,name="Two"}, 
        {id=3,name="Three"}, 
        {id=4,name="Four"} 
    ]);
    qryTest.sort(function(a, b) {
       return a.name > b.name ? 1 : -1;
    });
    writedump(qryTest);
</cfscript>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 立即在我的博客帖子中添加更新. (3认同)
  • @Leigh:如果我没记错的话...... Ray的博客文章是在CF10*预发布*期间写的.当时的实施是错误的.在发布之前修复了它. (2认同)