包含未返回所需结果的数组方法的JavaScript函数
我是一名JavaScript初学者,我已经编写了下面的代码段,在我看来,它应该返回一个数组:[5,4,3,2,1],但它会返回[5]。我意识到有更好的方法来实现这个结果,但我试图理解的是为什么我的解决方案不起作用包含未返回所需结果的数组方法的JavaScript函数,javascript,arrays,methods,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--) ar
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代码似乎没有改变数组。为什么不呢?当我将该行作为独立代码进行测试时,它运行良好。如有任何解释,将不胜感激。谢谢 并在不更改原始阵列的情况下创建新阵列。修改它作用的数组
基本上,您正在使用concat
生成一组新的子数组,但您没有对它们做任何操作。并在不更改原始数组的情况下创建一个新数组。修改其作用的数组
基本上,你正在用
concat
生成一堆新的子数组,但你没有用它们做任何事情。迈克说的:array。concat(…)
没有修改array
,它创建了一个新数组,然后被忽略
似乎您只想附加一个值-这就是它的作用:
您可能还希望使用从
数组.length
派生的变量值,而不是Mike所说的常量3
,数组。concat(…)不修改数组,它创建了一个新数组,然后被忽略
似乎您只想附加一个值-这就是它的作用:
您可能还希望使用从数组.length派生的变量值,而不是常量3
这里有一个答案concat
和shift
函数。下面是一个小片段,如果您不想创建现有数组的本地副本,如何通过算法方法轻松实现此函数
function reverseArray(array) {
var i = 0;
var j = array.length - 1;
while (i < j) {
var tempArrayElement = array[i];
array[i] = array[j];
array[j] = tempArrayElement;
i++;
j--;
}
}
函数反向数组(数组){
var i=0;
var j=array.length-1;
而(i
答案是如何工作的concat
和shift
功能。下面是一个小片段,如果您不想创建现有数组的本地副本,如何通过算法方法轻松实现此函数
function reverseArray(array) {
var i = 0;
var j = array.length - 1;
while (i < j) {
var tempArrayElement = array[i];
array[i] = array[j];
array[j] = tempArrayElement;
i++;
j--;
}
}
函数反向数组(数组){
var i=0;
var j=array.length-1;
而(i
为什么不交换第一个和最后一个元素以及第一个+1和最后一个-1,依此类推?arrayValue.reverse()
concat/slice代码似乎不会改变数组。为什么不呢?
因为concat
和slice
都不能修改数组。我知道这是一个枯燥的解释,但它就是解释。为什么不交换第一个和最后一个元素以及第一个+1和最后一个-1,依此类推?arrayValue.reverse()
concat/slice代码似乎不会改变数组。为什么不呢?
因为concat
和slice
都不能修改数组。我知道这是一个无聊的解释,但这是一个解释,只是个人的。我很感激你的回答。@NinaScholz谢谢:)我也很感激你的回答。高质量的东西,谢谢!这是我试图理解的核心(尽管看起来很简单)。感谢所有给他或她的建议的人——都是好东西,只是个人的。我很感激你的回答。@NinaScholz谢谢:)我也很感激你的回答。高质量的东西,谢谢!这是我试图理解的核心(尽管看起来很简单)。感谢所有给他或她的建议的人——都是好东西。