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

为何无法对同一数组进行多次排序得到不同结果?

问题原因与解决方案:多次排序后数组结果一致

问题根源

JavaScript的Array.sort()方法是原地排序——它会直接修改调用它的原数组,而非返回新数组。你的代码中,at_b和at_b2都是对同一个cp1数组的引用:

  • 第一次排序修改了cp1,at_b指向修改后的cp1
  • 第二次排序再次修改同一个cp1,at_b2也指向这个被二次修改后的数组
    最终两个变量自然指向完全相同的结果。

解决方案

每次排序前,先创建原数组的独立副本,再对副本执行排序操作。常用的数组复制方式有三种:

  1. 展开语法:[...arr]
  2. slice()方法:arr.slice()
  3. Array.from():Array.from(arr)

修改你的排序代码如下:

// 基于cp1的副本排序,避免干扰原数组和其他排序结果
this.at_b = [...this.cp1].sort((a: any, b: any) => Number(a.stats[0].day_off) - Number(b.stats[0].day_off)).reverse();
this.at_b2 = [...this.cp1].sort((a: any, b: any) => Number(a.stats[0].places_went) - Number(b.stats[0].places_went)).reverse();

这样at_b和at_b2会分别指向两个独立的数组,各自保留对应的排序结果,不会再出现结果一致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:20:05