Javascript 在不使用'的情况下反转数组;反向';或者复制一个数组

Javascript 在不使用'的情况下反转数组;反向';或者复制一个数组,javascript,arrays,algorithm,array-algorithms,Javascript,Arrays,Algorithm,Array Algorithms,我试图解决以下问题: 在不使用反转方法的情况下反转数组,而不使用 第二个数组,并且不复制任何值 我曾考虑过将数组作为一个对象,然后从头到尾更新数组,但我认为您也可以更新它 尝试了一些简单的方法,如: 函数反向数组(数组){ 对于(var i=0;i

我试图解决以下问题:

在不使用反转方法的情况下反转数组,而不使用 第二个数组,并且不复制任何值

我曾考虑过将数组作为一个对象,然后从头到尾更新数组,但我认为您也可以更新它

尝试了一些简单的方法,如:

函数反向数组(数组){
对于(var i=0;i反向耳环(阵列)以下操作将在不使用
reverse
方法的情况下反转数组。它通过交换第一个和最后一个元素、第二个和第二个到最后一个元素、第三个和第三个到最后一个元素等方式工作,直到
i
不再小于(
以下操作将在不使用
反转
方法的情况下反转数组。它通过交换第一个和最后一个元素、第二个和第二个到最后一个元素、第三个和第三个到最后一个元素等来工作,直到
i
不再小于(

a=['a','b','c','d','e'];
对于(变量i=0;i
内循环的第一次迭代将第一个元素移动到末尾,其余元素向前移动一次。接下来的每次迭代都做相同的事情,但比上一次迭代少1次。

a=['a','b','c','d','e'];
对于(变量i=0;i

内部循环的第一次迭代将第一个元素移动到末尾,其余元素向前移动一次。接下来的每次迭代都会执行相同的操作,但比上一次迭代少1次。

下面介绍如何在没有副本的情况下,使用临时数组或变量来保存值,或者使用
数组.reverse()
。就地修改数组

函数反向数组(数组){
var len=array.length;
对于(vari=len,j=-1;j++,i--;)数组;
array.length=len;
}
变量数组=['a'、'b'、'c'、'd'、'e'];
反向耳环(阵列);

console.log(array);
以下是如何在没有副本的情况下,使用临时数组或变量来保存值,或者使用
array.reverse()
。就地修改数组

函数反向数组(数组){
var len=array.length;
对于(vari=len,j=-1;j++,i--;)数组;
array.length=len;
}
变量数组=['a'、'b'、'c'、'd'、'e'];
反向耳环(阵列);

log(array);
我不得不使用交换变量,这是否违反了“不复制任何值”的规定

var test1=[2,'5',6,'a','Z'];
var test2=[2,'5',false,'a','Z',{a:'whatevs'}];
log('test1 before',JSON.stringify(test1));
log('test2 before',JSON.stringify(test2));
reversarooni(test1);
reversarooni(test2);
log('test1after',JSON.stringify(test1));
log('test2after',JSON.stringify(test2));
函数反转(输入阵列){
var指数=0;
var len=inputArray.length;
对于(;索引}
我不得不使用交换变量,这是否违反了“不复制任何值”的规定

var test1=[2,'5',6,'a','Z'];
var test2=[2,'5',false,'a','Z',{a:'whatevs'}];
log('test1 before',JSON.stringify(test1));
log('test2 before',JSON.stringify(test2));
reversarooni(test1);
reversarooni(test2);
log('test1after',JSON.stringify(test1));
log('test2after',JSON.stringify(test2));
函数反转(输入阵列){
var指数=0;
var len=inputArray.length;
对于(;索引
array=['a','b','c','d','e'];
console.log(数组);
对于(变量i=0;i
array=['a','b','c','d','e'];
console.log(数组);
对于(变量i=0;iconsole.log(array);
这里是一个最小的方法。给定
var arr=[1,2,3,4]
,此循环将
arr
变异为
[4,3,2,1]

for (var i = 0; i < arr.length - 1; i++) {
    arr.splice(i, 0, arr.pop());
}
for(变量i=0;i
这里是一个最小方法。给定
var arr=[1,2,3,4]
,此循环将
arr
变异为
[4,3,2,1]

for (var i = 0; i < arr.length - 1; i++) {
    arr.splice(i, 0, arr.pop());
}
for(变量i=0;i
使用ES6语法,您不需要将值复制到临时变量中(这是最后一个要求吗?)

功能反转(arr){
对于(设i=0,j=arr.length-1;iconsole.log(arr);
使用ES6语法,您不需要将值复制到临时变量中(这是最后一个要求吗?)

功能反转(arr){
对于(设i=0,j=arr.length-1;i
您可以使用,并使用递归和功能性应用程序返回交换的项目