2017-08-30 4 views
0

Je me demande comment obtenir seulement certains des éléments d'un objet en utilisant seulement for-in et if-else.Impression de certaines propriétés d'un objet en utilisant la boucle for-in et if-else

Par exemple, si nous avons l'objet suivant:

var person, 
property; 

person = { 
    firstName: "John", 
    lastName: "Smith", 
    profession: "Lawyer", 
    age: 31, 
    eyeColor: "blue", 
    hairColor: "blonde" 
} 

Comment puis-je imprimer seulement la deuxième et la quatrième propriété de cet objet avec pour en-et si d'autre?

+0

ne voulez-vous la deuxième et la quatrième propriété quel que soit ce que la propriété il sera? ou voulez-vous lastName et l'âge? – Argee

+0

Je veux la deuxième et quatrième propriété indépendamment de ce que cette propriété sera. Et je connais le mode "person.age" par exemple, mais je dois le faire avec une boucle for-in et if-else – Desislava

Répondre

0

Vous n'avez pas besoin de boucles, vous pouvez simplement accéder à la valeur de l'objet comme celui-ci

person.lastName 
person.age 
0
var person, 
    property, 
    count, 
    wantedProperties; 

person = { 
    firstName: "John", 
    lastName: "Smith", 
    profession: "Lawyer", 
    age: 31, 
    eyeColor: "blue", 
    hairColor: "blonde" 
}; 

count = 1; 
wantedProperties = [2,4]; 

for (prop in person) { 
    if (inArray(count, wantedProperties)) { 
     console.log(prop); 
    } 
    count++; 
} 

function inArray(needle, haystack) { 
    var length = haystack.length; 
    for(var i = 0; i < length; i++) { 
     if(haystack[i] == needle) return true; 
    } 
    return false; 
} 

La fonction d'aide InArray est nécessaire, parce que wantedProperties.indexOf (compte) ne fonctionne pas correctement puisque wantedProperties est un tableau d'ints.

Aussi, c'est moche, ce n'est pas basé sur zéro. Vous pourriez vouloir refactoriser le code, mais je voulais être lisible du mieux que je pouvais.

Si vous voulez enregistrer la valeur de la propriété, changer console.log(prop);-console.log(person[prop]);