我不知道如何确切标题,但这是一个典范
我将数组传递到一个函数,我希望将函数内部更改的所有更改都应用于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)