反向数组功能在javascript中不起作用

时间:2018-08-02 12:17:34

标签: javascript arrays reverse

我想不使用内置方法来反转数组,但以下功能不起作用:

function reverseArray(arr) {
  let brandNewArray = [];

  for (let i = arr.length - 1; i >= 0; i--) {
    brandNewArray += arr[i];
  }

  return brandNewArray;
}


reverseArray([1,2,3]);

2 个答案:

答案 0 :(得分:4)

使用push函数代替+=

function reverseArray(arr) {
  let brandNewArray = [];
  for (let i = arr.length - 1; i >= 0; i--) {
    brandNewArray.push(arr[i]);
  }
  return brandNewArray;
}

console.log(reverseArray([1,2,3]));

答案 1 :(得分:3)

您需要将项目推入其中,而不是+=。第一次使用+=会为字符串brandNewArray分配一个字符串(因为[] + 1会给您"1"),并带有最后一项的值。然后进行字符串串联,您得到321而不是数组的最终值是brandNewArray

function reverseArray(arr) {
  let brandNewArray = [];
  
  for (let i = arr.length - 1; i >= 0; i--) {
     brandNewArray.push(arr[i]);
  }
  
  return brandNewArray;
}


console.log(reverseArray([1,2,3]))

您还可以使用更紧凑的代码版本

const reverseArray = arr => arr.reduce((acc, cur) => (acc.unshift(cur), acc), []);

console.log(reverseArray([1,2,3]))