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.

1
Paul Clavier 14 avril 2018 à 22:55

3 réponses

Meilleure réponse

Avez-vous essayé lodash.cloneDeep()? https://lodash.com/docs/4.17.5#cloneDeep

1
Rob 14 avril 2018 à 20:03

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.

1
Dariusz Sikorski 14 avril 2018 à 20:17

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);
0
yasir jafar 14 avril 2018 à 20:05