Dans mon programme TypeScript, j'ai un tableau qui ressemble à ceci:
array = [
{
id,
...
nested: [
{
id,
..
},
{
id,
..
}
]
},
...
]
Je dois créer une copie de ce tableau, mais toutes les méthodes que j'ai trouvées en ligne (y compris ce fil ne semble fonctionner qu'avec un tableau d'objets et non le type imbriqué ici (car le tableau imbriqué est également exploité). Alors que JSON.parse(JSON.stringify(array))
pourrait ont fonctionné, j'ai une propriété date dans l'objet qui doit être préservée.
Que puis-je faire?
EDIT: Je ne sais pas pourquoi cela a été marqué comme doublon, mais je fais spécifiquement référence au fait que ce fil ne fonctionne pas dans ce cas.
3 réponses
Avez-vous essayé lodash.cloneDeep()
? https://lodash.com/docs/4.17.5#cloneDeep
Si vous êtes autorisé à utiliser des bibliothèques externes, consultez _.cloneDeep(value)
dans lodash bibliothèque. Le code doit ressembler à ceci:
// Original array
const originalArray = [
{
id,
...
nested: [
{
id,
..
},
{
id,
..
}
]
},
...
];
// Cloned array
const clonedArray = lodash.cloneDeep(originalArray);
Cela devrait résoudre le problème.
Vous pouvez utiliser ceci
function extend( a, b ) {
for( var key in b ) {
if( b.hasOwnProperty( key ) ) {
a[key] = b[key];
}
}
return a;
}
copyarray = extend( {}, copyarray);
extend( copyarray, array);
Questions connexes
Questions liées
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.