function reverseArray(array) {
var reversed_array = [];
for(var i = 0; i < array.length; i++) {
reversed_array.unshift(array[i]);
}
return reversed_array;
}
function reverseArrayInPlace(array) {
console.log(array); //[1,2,3,4,5]
array = reverseArray(array);
console.log(arguments); //{0: [5, 4, 3, 2, 1]} this is good.
console.log(array); // [5, 4, 3, 2, 1] this is also good.
return array; //should return [5, 4, 3, 2, 1]
}
console.log(reverseArray(["A", "B", "C"])); //["C", "B", "A"]
var arrayValue = [1, 2, 3, 4, 5];
reverseArrayInPlace(arrayValue);
console.log(arrayValue); // [1, 2, 3, 4, 5] *wrong*
これが、array.reverse() と同じように、reverseArrayInPlace() の戻り値で変数 (arrayValue) をオーバーライドしたい問題です。
ここに問題の解決策があります
function reverseArrayInPlace(array) {
var half = Math.floor(array.length / 2);
for(var i = 0; i < half; i++) {
var current = array[i];
array[i] = array[array.length - 1 - i];
array[array.length - 1 - i] = current;
}
console.log(array); // [5, 4, 3, 2, 1] this is good.
return array; //should return [5, 4, 3, 2, 1]
}
var arrayValue = [1, 2, 3, 4, 5];
reverseArrayInPlace(arrayValue);
console.log(arrayValue); // [5, 4, 3, 2, 1] *it works!*
両方のreverseArrayInPlace()関数に同じ値のreturnステートメントがある場合、このソリューションが(arrayValue)を新しい値に置き換えるのに機能する理由がわかりません。
誰かが私がプログラミングにかなり慣れていないことを説明してもらえますか、ありがとう!