通过 2 个键对结构体数组进行排序

问题描述 投票:0回答:1

我有以下数据:

arTicker = [];
arTicker[1] = { "vid" : 100,
                "symbol" : "apple" };
arTicker[2] = { "vid" : 101,
                "symbol" : "dell" };
arTicker[3] = { "vid" : 102,
                "symbol" : "ibm" };                    
arTicker[4] = { "vid" : 110,
                "symbol" : "apple" };                        
arTicker[5] = { "vid" : 95,
                "symbol" : "apple" };                        
arTicker[6] = { "vid" : 115,
                "symbol" : "samsung" };    
arTicker[7] = { "vid" : 121,
                "symbol" : "dell" };      
arTicker[8] = { "vid" : 97,
                "symbol" : "apple" };    
arTicker[9] = { "vid" : 107,
                "symbol" : "ibm" };     

我正在尝试按符号名称对该数组进行排序,并包括该符号的最大视频数。这样做,这就是我想要的输出:

apple    | 110
dell     | 121
ibm      | 107
samsung  | 115  

这是我尝试过的

arraySort(
    arTicker,
    function (e1, e2){
        return compare(e1.symbol, e2.symbol) // && e1.vid < e2.vid;
    }
);
writeDump(arTicker); 

有什么建议吗?

coldfusion
1个回答
0
投票

这个可能会有所帮助。

<cfscript>
    arTicker = [];
    arTicker[1] = { "vid" : 100, "symbol" : "apple" };
    arTicker[2] = { "vid" : 101, "symbol" : "dell" };
    arTicker[3] = { "vid" : 102, "symbol" : "ibm" };                    
    arTicker[4] = { "vid" : 110, "symbol" : "apple" };                        
    arTicker[5] = { "vid" : 95, "symbol" : "apple" };                        
    arTicker[6] = { "vid" : 115, "symbol" : "samsung" };    
    arTicker[7] = { "vid" : 121, "symbol" : "dell" };      
    arTicker[8] = { "vid" : 97, "symbol" : "apple" };    
    arTicker[9] = { "vid" : 107, "symbol" : "ibm" };     
    arraySort(
        arTicker,
        function (e1, e2){
            return compare(e1.symbol & '-' & numberFormat(e1.vid,'0000'), e2.symbol & '-' & numberFormat(e2.vid,'0000'));
        }
    );
    writeDump(arTicker); 
</cfscript>

我正在组合

symbol
vid
并将组合作为字符串进行比较。由于
vid
是一个数字,我用
0
填充它们,使其长度相同,这样数字作为字符串的排序就不会引起问题。

© www.soinside.com 2019 - 2024. All rights reserved.