我遇到了一个让原始数组发生变化的问题,奇怪的是添加arr.join("...").split("...")
似乎阻止了这个:
一点背景:
array
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
答案 0 :(得分:3)
要进行排序而不进行所有连接和拆分,请使用切片或concat复制数组:
var sorted = arr.slice(0).sort()
答案 1 :(得分:2)
这是有效的,因为join()然后split()操作会产生原始数组的副本。