You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对结构体数组按双关键字排序并提取各Symbol的最大Vid

问题:提取每个Symbol对应的最大VID并按Symbol排序

原始数据

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); 

解决方案

现有代码仅完成了数组按symbol排序的操作,但没有实现提取每个symbol对应最大vid的核心需求。正确思路是先分组统计最大值,再对结果排序输出。

实现代码

// 1. 分组统计每个symbol的最大vid
var symbolMaxVid = {};
for (var item in arTicker) {
    if (!structKeyExists(symbolMaxVid, item.symbol)) {
        symbolMaxVid[item.symbol] = item.vid;
    } else {
        if (item.vid > symbolMaxVid[item.symbol]) {
            symbolMaxVid[item.symbol] = item.vid;
        }
    }
}

// 2. 将分组结果转为数组并按symbol排序
var sortedResult = [];
for (var symbol in symbolMaxVid) {
    arrayAppend(sortedResult, {
        symbol: symbol,
        maxVid: symbolMaxVid[symbol]
    });
}
arraySort(sortedResult, function(a, b) {
    return compare(a.symbol, b.symbol);
});

// 3. 按格式输出结果
for (var entry in sortedResult) {
    writeOutput(leftPad(entry.symbol, 10) & " | " & entry.maxVid & "<br>");
}

代码说明

  1. 分组统计:遍历原始数组,用结构体存储每个symbol的最大vid。若symbol未在结构体中则初始化,已存在则对比更新最大值。
  2. 排序处理:将结构体的键值对转为数组,通过arraySort按symbol名称排序。
  3. 格式化输出:使用leftPad对齐symbol字段,保证输出格式和预期一致。

内容的提问来源于stack exchange,提问作者Kung Fu Ninja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:35:22