gpt4 book ai didi

javascript - 为什么在这种情况下排序会修改原始内容?

转载 作者:行者123 更新时间:2023-11-28 13:52:38 25 4
gpt4 key购买 nike

我遇到了一个问题,即更改原始数组,奇怪的是添加 arr.join("...").split("...") 似乎防止这种情况发生:

一些背景:

  • 我的脚本创建并向数组添加内容
  • 此数组初始化为空,如 arr=[]
  • 通过 arr[index] = "..."添加内容
  • 那么我想要一份已排序的 arr 副本
  • 当我进行排序时,原始arr被修改

这是正在发生的事情的简化版本:

var arr=[], sorted;

arr[0] = "hello";
arr[1] = "world";

//buggy, the original is sorted
//sorted = arr.sort(function(a,b){return (a.length-b.length);});

sorted = arr.join("improbableCollision").split("improbableCollision").sort(function(a,b){return (a.length-b.length);});
  • 为什么添加 .join("*").split("*") 可以解决问题?
  • 是什么导致了这个问题?
  • 有更优雅的方法来解决这个问题吗?

要获取完整脚本,请查看 jsFiddle

最佳答案

要在不进行所有连接和拆分的情况下进行排序,请使用切片或连接复制数组:

var 排序 = arr.slice(0).sort()

关于javascript - 为什么在这种情况下排序会修改原始内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9952598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com