4

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

我基于 Raymond Camden 的 Array 排序

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>

在此处输入图像描述

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

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

4

1 回答 1

6

Ray 的示例是针对 CF10 beta的。看到这个评论。在 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>

在此处输入图像描述

于 2016-02-19T18:56:57.200 回答