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

如何将数组前3名高分按降序存入不同文本框?附代码

解决方法

先修正原代码问题,再实现需求:

  • 函数名拼写错误:fucntion → function
  • 排序逻辑:要明确指定降序排序,默认排序是升序,会导致取到最低分
  • 循环语法错误:for循环的条件分隔符是分号,不是逗号
  • 文本框赋值:需根据索引分别给score1、score2、score3赋值,不能重复取数组第一个元素

情况1:数组存储纯分数数值

如果top3Array直接存的是分数数值,修正后的代码:

var top3Array:Array = [];

// 计算分数并加入数组
var totalScore = int((numeratorCounter/denominatorCounter)*100)/100;
top3Array.push(totalScore);

function scoreBoard(): void{
    // 降序排序:b - a 实现从高到低排列
    top3Array.sort(function(a, b) { return b - a; });
    
    // 给前3个文本框赋值,判断数组长度避免越界
    if(top3Array.length >= 1) {
        count1.text = "1";
        score1.text = String(top3Array[0]);
    }
    if(top3Array.length >= 2) {
        count2.text = "2";
        score2.text = String(top3Array[1]);
    }
    if(top3Array.length >= 3) {
        count3.text = "3";
        score3.text = String(top3Array[2]);
    }
}

情况2:数组存储含totalScore属性的对象

如果top3Array里是带属性的对象(比如{totalScore: 92.5}),用sortOn()的写法:

var top3Array:Array = [];

// 创建分数对象并加入数组
var scoreObj = {
    totalScore: int((numeratorCounter/denominatorCounter)*100)/100
};
top3Array.push(scoreObj);

function scoreBoard(): void{
    // 按totalScore字段降序排序
    top3Array.sortOn("totalScore", Array.DESCENDING);
    
    // 赋值文本框
    if(top3Array.length >= 1) {
        count1.text = "1";
        score1.text = String(top3Array[0].totalScore);
    }
    if(top3Array.length >= 2) {
        count2.text = "2";
        score2.text = String(top3Array[1].totalScore);
    }
    if(top3Array.length >= 3) {
        count3.text = "3";
        score3.text = String(top3Array[2].totalScore);
    }
}

关键提示

  • 必须指定降序规则,否则排序结果会是从低到高,无法取到高分
  • 加入数组长度判断,防止数组元素不足3个时出现索引越界报错
  • 原代码中count变量未定义,直接使用排名数字1、2、3更合理

内容的提问来源于stack exchange,提问作者Isaac Yeap Jie Ling

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:10:13