我正在尝试解决以下练习:
不使用反向方法,不使用第二个数组并且不复制任何值而对数组进行反向。
我考虑过将数组作为对象,然后从头到尾更新数组,但我认为您也可以对其进行更新。
尝试了一些简单的方法:
function reverseArray(array) { for (var i = 0; i < array.length; i++) { // var elem = array.shift(); var elem = array.shift() array.push(elem) } return array } array = ['a', 'b','c','d','e']; reverseArray(array);
但这并没有真正改变它。有关如何执行操作的任何建议或解释?
使用ES6语法,您不需要将值复制到临时变量中(这是最后一个要求的内容吗?)。
function reverse(arr) { for(let i = 0, j = arr.length-1; i < j; i++, j--) [arr[i], arr[j]] = [arr[j], arr[i]]; } const arr = ['a','b','c','d','e']; reverse(arr); console.log(arr);
可能有人争辩说,数组是在这里创建的(如果引擎没有对其进行优化),就像splice创建数组一样(作为其返回值)。
splice