J'ai deux ensembles d'objets JavaScript. Je veux comparer object1 à object2, puis obtenir une liste de toutes les clés qui sont dans object1, mais pas dans object2. J'ai cherché des ressources pour m'aider, mais j'ai fini par trouver des fonctions de comparaison pour des objets simples. Les objets que je veux comparer ont beaucoup d'imbrication. J'ai inclus un exemple en bas.Comparaison des clés de deux objets JavaScript
Comment est-ce que je ferais une fonction pour comparer ces deux objets? Est-il possible de créer une fonction flexible, qui fonctionnerait également si les objets devaient changer et contenir plus d'imbrication?
const object1 = {
"gender": "man",
"age": 33,
"origin": "USA",
"jobinfo": {
"type": "teacher",
"school": "Wisconsin"
},
"children": [
{
"name": "Daniel",
"age": 12,
"pets": [
{
"type": "cat",
"name": "Willy",
"age": 2
},
{
"type": "dog",
"name": "jimmie",
"age": 5
}
]
},
{
"name": "Martin",
"age": 14,
"pets": [
{
"type": "bird",
"name": "wagner",
"age": 12
}
]
}
],
"hobbies": {
"type": "football",
"sponsor": {
"name": "Pepsi",
"sponsorAmount": 1000,
"contact": {
"name": "Leon",
"age": 59,
"children": [
{
"name": "James",
"pets": [
{
"type": "dog",
"age": 4
}
]
}
]
}
}
}
}
const object2 = {
"gender": "man",
"jobinfo": {
"type": "teacher"
},
"children": [
{
"name": "Daniel",
"age": 12,
"pets": [
{
"type": "cat",
"name": "Willy",
"age": 2
},
{
"type": "dog",
"name": "jimmie",
"age": 5
}
]
}
]
}
donc ce que je veux réaliser en comparant ces deux objets, est dans ce cas d'avoir un rendement de tableau qui se compose des clés qui sont object1, mais pas object2. Ainsi, le tableau ressemblerait à ceci.
["age", "hobbies", "type", "sponsor", "name", "sponsorAmount", "contact", "name", "age", "children", "name", "pets", "type", "age"].
C'est ce que j'ai obtenu jusqu'à présent. C'est en quelque sorte de travailler. Mais il ne s'agit pas d'imprimer l'âge par exemple, car l'âge est une propriété qui existe dans plusieurs des objets imbriqués. jsFiddle: https://jsfiddle.net/rqdgojq2/
J'ai eu un regard sur les ressources suivantes:
s'il vous plaît ajouter le résultat souhaité et ce que vous avez essayé. peut-être un coup d'oeil vaut: [mcve]. –
Désolé, j'ai mis à jour le poste maintenant avec plus d'informations. Merci pour les commentaires. –
avez-vous besoin également des indices des tableaux? Avez-vous besoin du résultat dans l'ordre d'itération? –