我不知道该怎么称呼,但这是一个例子
我将数组传递给函数,并且我希望函数内所有更改都应用于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 ?
还有其他方法吗?
答案 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)