Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在函数内部修改JavaScript数组_Javascript_Arrays - Fatal编程技术网

在函数内部修改JavaScript数组

在函数内部修改JavaScript数组,javascript,arrays,Javascript,Arrays,在JavaScript中,如何在函数内部改变数组的值?我知道在使用某些数组方法时会发生这种情况,但它似乎不适用于常规赋值 var arr = [4] function changeArray(arr) { arr = [1,2,3]; } // arr is still equal to [4]. I want it to equal [1,2,3]. 据我所知,此代码不会在函数外更改“arr”的值。我怎样才能改变作为参数传递的数组呢 您可以使用: 或者您可以清空数组并。按下值: arr.

在JavaScript中,如何在函数内部改变数组的值?我知道在使用某些数组方法时会发生这种情况,但它似乎不适用于常规赋值

var arr = [4]

function changeArray(arr) {
arr = [1,2,3];
}

// arr is still equal to [4]. I want it to equal [1,2,3].
据我所知,此代码不会在函数外更改“arr”的值。我怎样才能改变作为参数传递的数组呢

您可以使用:

或者您可以清空数组并
。按下
值:

arr.length = 0;
arr.push(1, 2, 3);
// or given an array of values
arr.push.apply(arr, newValues);
但是,请确保该函数在适当的位置更改了阵列。虽然有一些本机函数可以这样做(比如
Array#sort
),但我认为这并不像简单地返回一个新数组那样常见


据我所知,此代码不会在函数外更改“arr”的值

对。将新值指定给变量或属性从不会更改另一个变量或属性的值(例外:全局范围和带有
语句的
)。
您基本上是试图更改变量的值,而不是改变值本身


JavaScript是call/pass/assign(维基百科也提到了),而不是。

concat方法不会改变原始数组。因此,如果您想通过在函数中添加另一个数组来变异数组,则需要使用循环和推/拼接的组合?如果您只想从数组中添加多个元素,则可以使用
.push
+
.apply
arr.push.apply(arr,newElements)
arr.length = 0;
arr.push(1, 2, 3);
// or given an array of values
arr.push.apply(arr, newValues);