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

JavaScript计算原数组与升序排序后数组对应项平方差之和

问题分析

原有代码存在以下4个核心问题:

  • 引用赋值错误:var a = arr; var b = arr; 两个变量指向同一个数组内存地址,对b执行sort方法会直接修改原数组,最终a和b都是排序后的数组,对应项差值恒为0,完全无法得到正确结果。
  • 平方计算逻辑错误:代码里写的sub = sub * 2是计算差值的2倍,不是需求要求的平方,平方应该写成sub * sub或者Math.pow(sub, 2)。
  • 返回值不符合要求:需求要求返回最终的平方差之和的数值,现有代码返回的是每次累加过程值组成的数组newarr,和需求不符。
  • 存在副作用:直接修改外部传入的原数组,会影响函数外的数组值,不符合函数封装的预期。
正确实现代码
function calculateSquareDifferenceSum(arr) {
  // 拷贝原数组后再排序,避免修改原数组
  const sortedArr = [...arr].sort((a, b) => a - b);
  let sum = 0;
  for (let i = 0; i < arr.length; i++) {
    const diff = arr[i] - sortedArr[i];
    sum += diff * diff;
  }
  return sum;
}

// 测试示例
const arr = [2, 3, 1];
console.log(calculateSquareDifferenceSum(arr)); // 输出6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 01:57:04