J'ai l'objet suivant: 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: p> Je suis capable de le faire si le nombre de paramètres est corrigé, comme celui-ci: p> Est-ce que quelqu'un sait comment je peux écrire func () code> afin d'accepter un nombre arbitraire d'arguments? P> p>
3 Réponses :
boucle sur ou si vous utilisez moderne JavaScript, vous pouvez le faire de cette façon: P> arguments code> en fonction de sa longueur:
Utiliser p> Réduire code> avec
Arguments code>:
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');
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.
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'); }