Pour ajouter l'utilisation de ES2015 de Reflect.ownKeys(obj)
et l'itération d'ES2015 sur les propriétés via un itérateur.
Par exemple:
let obj = { a: 'Carrot', b: 'Potato', Car: { doors: 4 } };
peut être répété par
// logs each key
Reflect.ownKeys(obj).forEach(key => console.log(key));
Si vous souhaitez parcourir directement les valeurs des clés d'un objet, vous pouvez définir un iterator
, tout comme les itérateurs par défaut de JavaScipts pour les chaînes, les tableaux, les tableaux typés, Map et Set.
JS tentera d'itérer via la propriété d'itérateur par défaut, qui doit être définie comme Symbol.iterator
.
Si vous voulez pouvoir parcourir tous les objets, vous pouvez l'ajouter en tant que prototype d'objet:
Object.prototype[Symbol.iterator] = function*() {
for(p of Reflect.ownKeys(this)){ yield this[p]; }
}
Cela vous permettrait d'itérer sur les valeurs d'un objet avec une boucle for ... of, par exemple:
for(val of obj) { console.log('Value is:' + val ) }
Attention : Au moment d'écrire cette réponse (juin 2018), tous les autres navigateurs, mais IE, prennent en charge les générateurs et l' for...of
itération viaSymbol.iterator
if (typeof(obj[propt]) === 'object') {
/ * Recommencez * /}