在函数内部修改JavaScript数组
在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.
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);