JavaScript中的反向功能

时间:2016-10-18 15:10:53

标签: javascript

我希望得到这个数组的反转,在这种情况下([4,3,2,1])。问题是我不能使用反向或其他shorcuts。

const ar = [1, 2, 3, 4]

const reverse = function (arr) {


    let x = arr;

        for(i=0; i<x.length;i++) {

        x[x.length-i-1]=x[i];


        }
return x;   
};

const reversedArray = reverse(ar);
console.log(reversedArray);

我认为它必须有效,但是当我跑步时我得到[1,2,2,1] 作为输出。这是因为当第二个索引的i = 1时,不再有3.我该怎么办?

6 个答案:

答案 0 :(得分:2)

这就像在不使用临时变量

的情况下交换两个变量

const ar = [1, 2, 3, 4]

const reverse = function (arr) {


    let x = arr, len = x.length-1;

        for(i=0; i<x.length/2;i++) {

          x[i]+=x[len-i];
          x[len-i]=x[i]-x[len-i];
          x[i]-=x[len-i]


        }
return x;   
};

const reversedArray = reverse(ar);
console.log(reversedArray);

答案 1 :(得分:1)

您可以通过使用常规for循环来保持简单,然后只需unshift将值放到新数组中:

function reverse(arr) {
  let reversed = [];
  for (let i = 0; i < arr.length; i++) {
    reversed.unshift(arr[i]);
  }
  return reversed;
}


console.log(reverse([1, 2, 3, 4]));
console.log(reverse([6, 7, 8, 9]));

答案 2 :(得分:1)

这是一个简单的例子。但是你可以用其他方法获得相同的结果。

function reverse(array){
    var new_array = [];
    for(var i = 0; i< array.length; i++){
        new_array[i] = array[array.length -i - 1];
    }
    return new_array;
}

//how to use
reverse([1,2,3,4,5]); //output

答案 3 :(得分:1)

从数组末尾开始while loop开始

&#13;
&#13;
var arr = [1, 2, 3, 4];

function arrReverse(arr) {
  var res = [];
  var max = arr.length - 1;
  while (max > -1) {
    res.push(arr[max]);
    max -= 1;
  }
  return res;
}

var res = arrReverse(arr);
console.log(res);
&#13;
&#13;
&#13;

答案 4 :(得分:0)

由于Javascript的引用,您在执行此操作时正在更改阵列。

你可以使用array.prototype.reverse(用作[] .reverse()) 或者您应该设置一个新数组并将其返回。

答案 5 :(得分:-1)

不要将数组用作常量。它可能不会让你在数组中进行更改。

然后使用反向方法:

ar.reverse();