0
votes

Fonction JS qui enregistre les propriétés des objets imbriqués, où les propriétés sont transmises en tant que paramètres

J'ai l'objet suivant: xxx

Je veux écrire une fonction à laquelle vous pouvez transmettre un objet plus un nombre arbitraire de chaînes désignant les propriétés imbriquées dans cet objet et avoir la fonction sortir la valeur correspondante. Par exemple: xxx

Je suis capable de le faire si le nombre de paramètres est corrigé, comme celui-ci: xxx

Est-ce que quelqu'un sait comment je peux écrire func () afin d'accepter un nombre arbitraire d'arguments?


0 commentaires

3 Réponses :


2
votes

boucle sur arguments en fonction de sa longueur: xxx

ou si vous utilisez moderne JavaScript, vous pouvez le faire de cette façon: xxx


0 commentaires

3
votes

Utiliser Réduire code> avec Arguments code>:

p>

let a = {
  aa: {
    aaa: 1
  },
  ab: {
    aba: {
      abaa: 2
    }
  }
}

function func(...args) {
  console.log(args.reduce((a, c) => a[c]));
}

func(a, 'aa', 'aaa');
func(a, 'ab', 'aba', 'abaa');


3 commentaires

Merci! Cela fonctionne, je l'apprécie. Je vais donner le chèque vert à la réponse de Joseph Sativé, car il est arrivé en premier, mais votre solution de ce que je cherchais aussi.


J'aime bien cette réponse mieux que la mienne.


Merci@josephsible, toujours agréable de connaître des gens comme mes réponses.



1
votes

Il est pratique de traiter le nombre arbitraire d'arguments avec ES6 Mission de déstructuration

function logNestProperties(obj, ...args) {
    let value = args.reduce((acc, cur) => acc[cur], obj);
    console.log(value || 'illegal properties');
}


0 commentaires