【发布时间】:2018-12-18 14:52:53
【问题描述】:
一个初学者 JS 问题.. 我需要编写一个函数来反转作为函数输入的数组。 (我不能使用 reverse 方法)。
我想知道为什么会这样:
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;
}
let arr = [0, 1, 2, 3, 4, 5];
console.log(reverseArrayInPlace(arr))
但这确实不是:
function reverseArrayInPlace(arr) {
let len = arr.length;
for (counter = 0; counter < 2 * len; counter += 2) {
arr.unshift(arr[counter]);
}
arr = arr.slice(0, len);
}
let b = [0, 1, 2, 3, 4, 5];
console.log(reverseArrayInPlace(b));
看起来arr = arr.slice(0,len); 部分不起作用..我想知道为什么:
b = b.slice(0,6);
[5, 4, 3, 2, 1, 0]
【问题讨论】:
-
设置断点并查看数组中的值发生了什么。
-
console.log() 和断点是你的朋友
-
你没有从函数返回任何东西。如果你最后
return arr,你会看到它有效。 -
@LeviBerkowitz 没有“正确的方法”。 “正道”是什么意思?
标签: javascript arrays function