如何重置功能范围之外的数组

时间:2019-05-17 03:13:13

标签: javascript

我不知道该怎么称呼,但这是一个例子

我将数组传递给函数,并且我希望函数内所有更改都应用于ref(事件[]] =>

传递的数组)
var myArray = [1,2,3,4];
function resetter(arr){
   arr = []
}
resetter(myArray); // still  [1,2,3,4] because I assign a new object

但是我希望将更改应用于我作为引用传递的数组

var myArray = [1,2,3,4];
function resetter(arr){
   arr.length = 0;
}
resetter(myArray); // [] but is this clean ?

还有其他方法吗?

1 个答案:

答案 0 :(得分:2)

如果两个变量具有相同的引用,则意味着修改(更改属性)其中一个将更改另一个。这并不意味着为一个值分配新值会更改另一个值。

您可以使用splice()

var myArray = [1,2,3,4];
function resetter(arr){
   arr.splice(0,arr.length)
}
resetter(myArray);

console.log(myArray)

考虑将数组更改为全新数组而不只是[]。您可以使用传播运算符将另一个数组传递给splice()

var myArray = [1,2,3,4];
function resetter(arr, newArray){
   arr.splice(0,arr.length,...newArray)
}
resetter(myArray, ['str1','str2']);

console.log(myArray)