javascript - 如何重置函数范围外的数组

标签 javascript

我不知道怎么给这个标题,但这里有一个例子

我将一个数组传递给一个函数,我希望函数内部的所有更改都应用到由 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)

关于javascript - 如何重置函数范围外的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56179078/

相关文章:

javascript - 推迟 wordpress 插件 css/script 好不好

javascript - input type=submit 被div包含时不提交

javascript - 我正在尝试动态更改 div 元素的大小

javascript - 表单输入VIRTUAL keyCode 捕获。如何?

javascript - Html 页面标记使用正则表达式计数

javascript - 关注 $window 打开的窗口

javascript - 在 KineticJS 中单击时向多边形添加新点

javascript - 为什么自动对焦在 ReactJS 和 antd 中不起作用?

javascript - 使用 jquery ajax 调用获取文本值到 Controller

javascript - href 中的 $scope - AngularJS