У меня была проблема с изменением исходного массива, любопытно, что добавление arr.join("...").split("...")
, кажется, предотвращает это:
Небольшой фон:
- myскрипт создает и добавляет вещи в
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