gpt4 book ai didi

Javascript替换/修改变量指向的对象?

转载 作者:行者123 更新时间:2023-12-03 00:42:36 25 4
gpt4 key购买 nike

我有一个指向一个对象的变量,并且想用另一个修改过的对象替换该对象。是否有任何 Javascript 函数可以执行我假设的“分配”函数在下面的示例控制台 session 中执行的操作?

var x = [[1,2,3], [4,[8,2,[1,4,"Delete Me"],4],6]]
var y = getSubArrayWithString(x) // Equivalent to y = x[1][1][2] in this case
JSON.stringify(y)
>>> "[1,4,"Delete Me"]"
var newY = y.filter(item => item !== "Delete Me")
y.assign(newY) // Equivalent to x[1][1][2] = newY
JSON.stringify(x)
>>> "[[1,2,3],[4,[8,2,[1,4],4],6]]"

如果我执行y = newY,只是重新分配y变量以指向newY对象,它不会修改x.

我知道我可以使用 splice 就地修改 y,但是当我应用更复杂的更改来获取 newY

最佳答案

理想情况下,getSubArrayWithString() 将返回对您有兴趣修改的数组的父级的引用(甚至可能是您想要的索引)。那么就很简单了:

var x = [[1,2,3], [4,[8,2,[1,4,"Delete Me"],4],6]]
var [y, ind] = [x[1][1], 2] // getSubArrayWithString returns parent and index
y[ind] = y[ind].filter(item => item !== "Delete Me")
console.log(x)

如果您确实只使用数组引用,则可以使用 splice() 来更改数组而不是覆盖它。您甚至可以splice()所有内容并重新分配新值,但这似乎效率很低:

var x = [[1,2,3], [4,[8,2,[1,4,"Delete Me"],4],6]]
var y = x[1][1][2]
var newY = y.filter(item => item !== "Delete Me")

y.splice(0,y.length) // sketchy, but works
Object.assign(y, newY)

console.log(x)

关于Javascript替换/修改变量指向的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53384400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com