Так что я только что обнаружил сегодня, что делает это:установленное значение объекта хранится в переменной обнулить
a = { b: { c: 1, d: 2 }, d: {} }
sub = a.b
// sub is { c: 1, d: 2 }
sub
теперь на самом деле объект, хранящийся в, не клон.
Теперь, если я это сделать:
sub.c = "x"
// a is now: { b: { c: 'x', d: 2 }, d: {} } // nice
То же самое относится и к массивам.
Так что у меня этот массив:
arr = [{a: 1, b: 2}, {c: 3, d: 4}]
sub = arr[1]
я хотел бы, чтобы удалить sub
из массива, так что arr
становится: [{a: 1, b: 2}]
, но если я sub = null
я просто присвоить новое значение sub
. То же самое для delete
.
delete sub // will unset the sub variable, not the object that it references.
Таким образом, вопрос: как удалить {c: 3, d: 4}
из массива с помощью sub
Даже если это работает, я не могу использовать delete arr[1]
, потому что я не знаю индекс. Я храню объект, используя функцию min
lodash
Вы не можете. 'arr [1]' и 'sub' являются ссылками на один и тот же объект, но' sub' не является указателем на массив. – Barmar
Обратите внимание, что между 'sub.c =" x "и' sub = null' существует большая разница. В первом случае вы * читаете * значение 'sub' и мутируете объект, во втором вы * записываете * новое значение' sub'. –