首页 > 解决方案 > 在引用变量中更改时原始数组未更新

问题描述

对于我的工作,我需要访问嵌套对象数组。我不想每次都使用完整路径访问它。所以我想通过将实际引用分配给变量来缩短引用。

我试图找出现有的答案,但没有得到这种情况的答案。

我所做的:将数组的引用分配给变量,修改引用的值。但是原始数组没有被修改。

下面是我想要实现的演示代码。

let obj = {
    innerObj1: {
        arr: [2,3,4,5,6]
    }
}

var ref = obj.innerObj1.arr;
console.log(ref);
// output [2,3,4,5,6]

ref = ref.filter(n => n%2 == 0);
console.log(ref);
// output [2,4,6]

//Original obj
console.log(obj.innerObj1.arr)
// output [2,3,4,5,6]

标签: javascriptarrayspass-by-reference

解决方案


只需访问以下特定索引ref

let obj = {
    innerObj1: {
        arr: [2, 3, 4, 5, 6]
    }
}

const ref = obj.innerObj1.arr;
console.log(ref);
// output [2, 3, 4, 5, 6]

for(let i = 0; i < ref.length; i++) {
  ref[i] = ref[i] % 2 == 0;
}

// Original obj
console.log(obj.innerObj1.arr)
// output [true, false, true, false, true]

推荐阅读