包含数组方法的 JavaScript 函数未返回所需结果

标签 javascript arrays methods

我是一名 JavaScript 初学者,我编写了下面的代码片段,在我看来应该返回一个数组:[5, 4, 3, 2, 1],但它却返回 [5]。我意识到有更好的方法来实现结果,但我试图理解的是为什么我的解决方案不起作用。

function reverseArray(array) {
  for (var i = 3; i >= 0; i--)
    array.concat(array.slice(i,i+1));
  for (var i = 3; i >= 0; i--)
    array.shift();
  return array;
};

var arrayValue = [1, 2, 3, 4, 5];
reverseArray(arrayValue);
console.log(arrayValue);
// JS Bin returns: [5]

shift 方法似乎有效,但 concat/slice 代码似乎没有改变数组。为什么不?当我作为独立代码测试该行时,它工作正常。任何解释将不胜感激。谢谢!

最佳答案

concatslice创建一个数组而不更改原始数组。 shift 修改它所作用的数组。

基本上,您正在使用 concat 生成一堆新的子数组,但您没有对它们执行任何操作。

关于包含数组方法的 JavaScript 函数未返回所需结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39540616/

相关文章:

javascript - 生成PDF时如何检测长表的分页符

javascript - 检查上传的图片是否被压缩

ios - 比较两个数组并找到SWIFT 3中不常见元素的索引

java - 枚举数组到字符串数组

c# - 获取对象调用层次结构

javascript - 异步函数中的 Promisereject() 导致 “Uncaught (in promise)” 警告

javascript - 当通过书签插入时,jquery 在某些站点中表现异常

c++ - 如何在postgresql中格式化数组参数?

java - Java(android) 如何在另一个方法中使用一个方法的变量

java - 如何针对同一条件调用两个不同的函数?