Здравствуйте есть две функции
function reverseArrayPlace(array) {
let newArray = array;
array = [];
let b = 0;
for (let a = newArray.length - 1; a >= 0; a--) {
array[b] = (newArray[a]);
b++;
console.log(array);
}
return array;
}
function reverseArrayInPlace(array) {
for (let i = 0; i < Math.floor(array.length / 2); i++) {
let old = array[i];
array[i] = array[array.length - 1 - i];
array[array.length - 1 - i] = old;
}
return array;
}
При вызове reverseArrayPlace допустим let ar=["a","b","c"]; массив ar остается таким же. А при вызове
reverseArrayInPlace(ar) ar меняется, может кто-нибудь объяснить почему?
Вам стоит внимательно прочитать https://learn.javascript.ru/object-copy
Насколько я понимаю, вы никак не используете возвращаемые из функций значения, просто проверяете потом переданный в них массив на изменения. И первая функция не меняет этот массив, она только читает из него данные, в отличие от второй:
function reverseArrayPlace(array) {
// тут вы присвоили переданный массив новой переменной, из которой будете только читать
let newArray = array;
array = []; // теперь array содержит новый пустой массив, его вы и меняете
let b = 0;
// тут вы просто читаете длину старого массива, но никак его не меняете
for (let a = newArray.length - 1; a >= 0; a--) {
array[b] = (newArray[a]); // все записи происходят в новый, из старого только чтение
b++;
console.log(array);
}
return array; // тут вы вернули новый массив, старый остался неизменным
}
Продвижение своими сайтами как стратегия роста и независимости