function bubbleSort(toSort) {
let sort = toSort;
let swapped = true;
while(swapped) {
swapped = false;
for(let i = 0; i < sort.length; i++) {
if(sort[i-1] > sort[i]) {
let temp = sort[i-1];
sort[i-1] = sort[i];
sort[i] = temp;
swapped = true;
}
}
}
return sort;
}
let asdf = [1,4,3,2];
let asd = bubbleSort(asdf);
console.log(asdf, asd);
Выход на этот код: [1, 2, 3, 4] [1, 2, 3, 4].Почему эта функция мутирует данные?
Что бы ожидать: [1, 4, 3, 2] [1, 2, 3, 4].
Что мне интересно, почему это мутирует переменную asdf? Функция bubbleSort принимает данный массив (asdf), создает его копию (sort), а затем обрабатывает эту переменную и возвращает ее, для которой asd задано равным. Я чувствую себя идиотом, но я понятия не имею, почему это :(
сделать копию массива, 'пусть сортировки = toSort.slice(); '- см https://stackoverflow.com/questions/518000/is-javascript-a-pass-by-reference- или-pass-by-value-language –
См. этот http://stackoverflow.com/questions/41255297/why-does-this-function-mutate-data/41255422#41255422 – vijay