2017-02-23 7 views
0

Ich fange gerade an, Kodierung zu lernen, und ich stieß auf diese Frage, die ich nicht verstehen konnte.Iterieren durch Objekteigenschaften/Schlüssel

"Die zweite Funktion, die wir hinzufügen, heißt Suche, und sie wird einen Vornamen als Argument annehmen. Sie wird versuchen, den ersten empfangenen Namen mit einem der Vornamen in der Kontaktliste unserer Freunde abzugleichen. Wenn eine Übereinstimmung gefunden wird, werden die Kontaktinformationen unseres Freundes (Vorname, Nachname, Nummer, Adresse) an der Konsole protokolliert. "

Variablen definieren sich wie folgt:

var friends = {}; 
friends.bill = { 
    firstName: "Bill", 
    lastName: "gates", 
    number: "1234567", 
    address: ['bishan','starbucks', 'centertable'] 
}; 

friends.steve = { 
    firstName: "Steve", 
    lastName: "jobs", 
    number: "987654", 
    address: ['orchird', 'ikoma', 'ga'] 
}; 

die Antwort lautet wie folgt:

var search = function(name) { 
    for(var key in friends) { 
     if(friends[key].firstName === name) { 
      console.log(friends[key]); 
      return friends[key]; 
     } 
    } 
}; 

könnte jemand besser erklären, wie entstand die var "Schlüssel" kam? und warum kann ich nicht einfach friends.firstName === name, console.log (freunde.name), return friends.name ??

würde mich freuen, wenn jemand erklären könnte, danke.

+0

Überprüfung in mdn https offiziellen Objekt Nötige zu finden: //developer.mozilla. org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Objekt –

+0

Wie sieht 'friends' aus? Was ist die Ausgabe von 'console.log (friends [key]);'? –

+0

var Freunde = {}; friends.bill = { vorname: "Bill", nachName: "gates", Nummer "1234567", Adresse: [ 'Bishan', 'Starbucks®', 'centertable'] }; Freunde.steve = { vorName: "Steve", nachName: "Jobs", Nummer: "987654", Adresse: [ 'orchird', 'ikoma', 'ga'] }; – DarkArtistry

Antwort

1

Von OP Kommentar:

var friends = {}; 

friends.bill = { 
    firstName: "Bill", 
    lastName: "gates", 
    number: "1234567", 
    address: ['bishan','starbucks', 'centertable'] 
}; 

friends.steve = { 
    firstName: "Steve", 
    lastName: "jobs", 
    number: "987654", 
    address: ['orchird', 'ikoma', 'ga'] 
}; 

friends ist ein verschachteltes Objekt, das auch wie so dargestellt werden kann:

friends = { 
    bill: { 
     firstName: "Bill", 
     lastName: "gates", 
     number: "1234567", 
     address: ['bishan','starbucks', 'centertable'] 
    }, 
    steve: { 
     firstName: "Steve", 
     lastName: "jobs", 
     number: "987654", 
     address: ['orchird', 'ikoma', 'ga'] 
    } 
} 

Der for..in Schleife iteriert über alle Schlüssel in dem friends Objekt, mit dem variablen key in Ihrem Fall.

Warum kann ich nicht einfach friends.firstName eingeben === name, console.log (friends.name), return friends.name ??

Weil, das zu tun, müssen Sie firstName oder name als Eigenschaft in friends haben. Da diese Eigenschaften im Inneren verschachtelt sind (name ist kein Ereignis innerhalb der verschachtelten Objekte), wurde eine for..in-Schleife verwendet.

1

Sie haben ein Objekt friends mit 2 Eigenschaften bill und steve (das sind die Schlüssel). Wenn Sie friends.bill aufrufen, erhalten Sie ein Objekt (den Wert) mit firstname, lastname, number, address zurück. Sie müssen friends alle Eigenschaften des Objekts iterieren das Sie

Sie können Object.values(obj)

var firstNameInput = "Steve"; 
 
var friends = {}; 
 
friends.bill = { 
 
    firstName: "Bill", 
 
    lastName: "gates", 
 
    number: "1234567", 
 
    address: ['bishan','starbucks', 'centertable'] 
 
}; 
 
friends.steve = { 
 
    firstName: "Steve", 
 
    lastName: "jobs", 
 
    number: "987654", 
 
    address: ['orchird', 'ikoma', 'ga'] 
 
}; 
 

 
//Iterates all the friends 
 
Object.values(friends).forEach(function(f){ 
 
    //Compare the property "firstname" with the input 
 
    if(f.firstName === firstNameInput){ 
 
    //Friend found 
 
    console.log(f); 
 
    return; 
 
    } 
 
});