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

if语句与三元运算符代码对比:自定义compareTriplets函数无法运行原因排查

compareTriplets函数代码错误分析与差异对比

两段代码对比

你的代码:

function compareTriplets(a, b) {
    // Write your code here
    let score = [0,0];
for (let i = 0; i < a.length; i++) {
    if (a[i] > b[i]) {
        return score[0]++;
    } else if (a[i] < b[i]) {
        return score[1]++;
    } else return ""
}
return score;
}

可用代码:

function compareTriplets(a, b) {
let score = [0,0]

for (let i = 0; i < a.length; i++)
a[i] > b[i] ? score[0]++ : a[i] < b[i] ? score[1]++ : ""
return score
}

你的代码错误点

  • 提前终止循环与函数:循环内部的return语句是致命问题。每次进入循环的第一次判断,不管是a[i]>b[i]、a[i]<b[i]还是元素相等,都会执行return直接终止函数,根本不会完成整个三元组的遍历。
  • 返回内容完全错误:就算忽略提前终止的问题,return score[0]++是先返回当前分数值再自增,不符合累加分数的逻辑;而else return ""更是直接返回空字符串,完全偏离题目要求的返回分数数组的需求。

两段代码的核心差异

  1. 循环内执行逻辑:
    • 你的代码用if-else但错误加入return,导致循环仅执行一次就结束函数。
    • 可用代码用三元运算符做条件分支的自增操作,没有任何return,循环会完整遍历整个数组,把所有元素的比较结果累加到分数数组中。
  2. 函数返回时机:
    • 你的代码在循环内部提前返回,永远到不了最后一行的return score。
    • 可用代码是在循环完全执行完毕后,才返回最终的分数数组,符合题目要求。
  3. 相等元素的处理:
    • 你的代码在元素相等时直接return ""终止函数;可用代码在元素相等时仅执行空操作,不改变分数,继续下一次循环。

内容的提问来源于stack exchange,提问作者Shaneeyb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 11:09:13