Javascript заменить / изменить объект, на который указывает переменная? - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть переменная, указывающая на объект, и я хотел бы заменить этот объект другим измененным.Есть ли какая-либо функция Javascript, которая может делать то, что моя гипотетическая функция «назначить» делает в приведенном ниже примере консоли?newY объект, он не изменяет x.

Я знаю, что мог бы изменить y на месте с помощью сплайсинга, но это не сработает, когда я применяю более сложные изменения, чтобы получить newY

1 Ответ

0 голосов
/ 20 ноября 2018

В идеале 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...