我希望得到这个数组的反转,在这种情况下([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.我该怎么办?
答案 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
和开始:
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;
答案 4 :(得分:0)
由于Javascript的引用,您在执行此操作时正在更改阵列。
你可以使用array.prototype.reverse(用作[] .reverse()) 或者您应该设置一个新数组并将其返回。
答案 5 :(得分:-1)
不要将数组用作常量。它可能不会让你在数组中进行更改。
然后使用反向方法:
ar.reverse();