Javascript 编写自己的反向数组函数而不定义新的空数组
我正在尝试编写一个函数,该函数在不定义新的空数组的情况下反转数组的元素Javascript 编写自己的反向数组函数而不定义新的空数组,javascript,Javascript,我正在尝试编写一个函数,该函数在不定义新的空数组的情况下反转数组的元素 let arrayValue = [1, 2, 3, 4, 5] function remove(array, index) { return array.slice(0, index).concat(array.slice(index + 1)); } function reverseArrayInPlace(array) { for (i = array.length - 2; i >= 0; i--) {
let arrayValue = [1, 2, 3, 4, 5]
function remove(array, index) {
return array.slice(0, index).concat(array.slice(index + 1));
}
function reverseArrayInPlace(array) {
for (i = array.length - 2; i >= 0; i--) {
let removedCharacter = array[i];
array = array.concat(removedCharacter);
array = remove(array, i);
}
return array;
}
当我console.log(reversearlayinplace(arrayValue))时,我得到的是[5,4,3,2,1]的相反顺序
但是,当我尝试只执行reverseArrayInPlace(arrayValue)和console.log(arrayValue)时,我得到的是[1,2,3,4,5],这是在开始时定义的值
是否有一种方法可以更新函数中的arrayValue绑定,然后当它位于函数外部的console.log时,它会显示相反的顺序?//显示偶数和奇数长度的情况
// show cases of even and odd lengths
const x = [1,2,3,4];
const y = [1,2,3,4,5];
for (let i = 0; i < x.length / 2; i++) {
const tmp = x[i];
x[i] = x[x.length - 1 - i];
x[x.length - 1 - i] = tmp;
}
for (let i = 0; i < y.length / 2; i++) {
const tmp = y[i];
y[i] = y[y.length - 1 - i];
y[y.length - 1 - i] = tmp;
}
console.log(x);
// [4, 3, 2, 1]
console.log(y);
// [5, 4, 3, 2, 1]
常数x=[1,2,3,4];
常数y=[1,2,3,4,5];
for(设i=0;i
函数反转arrayinplace(数组){
for(设i=0;i
数组和方法的MDN文档解释说,这些方法返回新数组,而不是修改现有数组。如果您正在寻找用于修改数组的内置数组方法,将完成此工作。但是,使用splice
实现这一点要比像其他答案所建议的那样只使用for
循环复杂得多。您可以在数组的中点对称交换值,如
const arr=[0,1,2,3,4];
常数长度=阵列长度;
for(设i=0;i 控制台日志(arr)代码>您的删除
功能根本不到位。就地解决方案不会重新分配数组
变量,也不需要返回值。就地解决方案实际上会通过交换传入数组的元素来改变数组。请尝试一下,让我们看看你的尝试。这个练习的解决方案在最后有一个return语句,所以我假设我的函数也必须返回一些东西。感谢您对就地的澄清。这是我30分钟前给出的答案。我不同意,由于变量命名,这段代码比另一个答案中的代码更加自我记录,您没有将其标记为“低质量”,这只是建议。通常情况下,只有代码的答案会在SO之前进入低质量的队列(不是我会标记为低质量或高质量)。这是我的评论,这就是为什么建议。希望你现在明白了。谢谢
function reverseArrayInPlace(array) {
for (let i = 0; i < array.length / 2; i++) {
const oppositeArrayIndex = array.length - (i + 1);
const oppasiteArrayValue = array[oppositeArrayIndex];
array[oppositeArrayIndex] = array[i];
array[i] = oppasiteArrayValue;
}
}