Почему сортировка модифицирует оригинал в этом случае?

У меня была проблема с изменением исходного массива, любопытно, что добавление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

Ответы на вопрос(2)

Ваш ответ на вопрос