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



我不知道如何确切标题,但这是一个典范

我将数组传递到一个函数,我希望将函数内部更改的所有更改都应用于Ref(event the [](=>

传递的数组
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 ?

还有其他方法吗?

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

您可以使用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)

最新更新