Как глубоко клонировать динамический объект в машинописном тексте?Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Как глубоко клонировать динамический объект в машинописном тексте?

Сообщение Anonymous »

Я пытался глубоко клонировать динамический объект в машинописном тексте, и все методы просто возвращали пустой объект { для этого конкретного сценария!
Вот тип объекта, который я пытаюсь глубоко клонировать

Код: Выделить всё

fullValues: { [key : string ] : Array },
ПРИМЕЧАНИЕ: fullValues передается компоненту реагирования, и указанные ниже операции выполняются в этом компоненте реагирования! FullValues НИКОГДА не изменяется напрямую на протяжении жизненного цикла программы и изначально представляет собой состояние родительского компонента, как показано ниже:

Код: Выделить всё

const facetValues: { [key: string ] : Array } = {};

// Type => facetedData?: FacetCollectionType
if (facetedData) {
Object.entries(facetedData).forEach(([key, value]) => {
Object.defineProperty(facetValues, key, { value: [] as string[]});
});
}

const [ facets, setFacets ] = useState(facetValues);

{facetedData &&

Object.keys(facetedData).length !== 0 ?
Object.entries(facetedData).map(([key, options]) => (

))
:
null
}

Случайный пример того, как можно структурировать этот объект:

Код: Выделить всё

{
status: [],
plan: [],
}
Я попробовал следующие методы глубокого клонирования:
Использование lodash deepclone

Код: Выделить всё

console.log(fullValues); // outputs { status: [], plan: [] }
console.log("after deep clone => ");
console.log(_cloneDeep(fullValues)); // outputs {}
Использование метода stringify JSON

Код: Выделить всё

console.log(fullValues); // outputs { status: [], plan: [] }
console.log("after deep clone => ");
console.log(JSON.parse(JSON.stringify(fullValues))); // outputs {}
Однако, если я это сделаю

Код: Выделить всё

let fullValues: { [key : string ] : Array }  = { status: [], plan: [] };
console.log(fullValues); // outputs { status: [], plan: [] }
console.log("after deep clone => ");
console.log(_cloneDeep(fullValues)); // outputs { status: [], plan: [] }
Здесь это работает.
Кажется, нет никакой логики в том, почему это происходит? Это бессмысленно!

Подробнее здесь: https://stackoverflow.com/questions/793 ... typescript
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»