我不得不說是使得原來陣列,以改變出了問題,奇怪的是,加入arr.join("...").split("...")
似乎防止這種情況:爲什麼在這種情況下排序修改原始文件?
一點背景:
- 我的腳本創建並添加東西的
array
- 這陣像
arr=[]
- 的東西被添加傳遞
arr[index] = "..."
- 初始化空的話,我想擁有的副本在
arr
但排序 - 當我做了排序,在orignial
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
但爲什麼不要這樣做,我的意思是,我總是分割/切片/等,而不用擔心修改原稿 – ajax333221 2012-03-31 03:03:23
這只是arr.sort的工作方式,它是「原地」排序。 – nicolaskruchten 2012-03-31 03:03:58
@nicolaskruchten感謝您的回答+1 – ajax333221 2012-03-31 03:09:32