假设我们有a = [1,2,3,4,5]
,我想通过使用函数将其归零([0,0,0,0,0]
)。
这有效:
function clear (arr) {
arr.forEach((element, index) => {arr[index] = 0});
}
但这不是:
function clear2 (arr) {
arr = [...arr].fill(0);
}
arr.fill(0)
中的clear2()
可以工作,但是它在Vue.js中运行,因此我无法按索引分配数组元素,我需要完全重新分配数组var才能保持反应性。
为什么clear2()
不起作用?作为对象的数组应该通过引用传递,那么我在做什么错了?
更新:我在Vue中将它用作单击方法,因此我无法从中返回,而是希望将不同的数组作为参数传递。
答案 0 :(得分:1)
使用
arr = [...arr].fill(0);
您要创建原始数组的副本,然后更改该副本的值,然后将参数的参考值设置为新数组(您不更新参数的内部状态)
与
arr.forEach((element, index) => {arr[index] = 0});
您实际上正在更新数组参数的内部状态
答案 1 :(得分:1)
您可以直接使用fill
,因为
fill
方法是可变方法,它将更改此对象本身并返回它,而不仅仅是返回它的副本。
function clear(array) {
array.fill(0);
}
var array = [1, 2, 3, 4];
clear(array);
console.log(array);