2016-03-20 17 views
-1

Ich versuche, die Grundlagen einiger js Konzepte zu verstehen, und zwar auf GrundUnklare etwa innerhalb einer Funktion von Javascript forEach Schleife Rückkehr

account auf definierten Wert meiner Funktion gibt nur eine einfache Zeichenfolge, wie „facebook“ der Rückgabewert von Konten ist nur ein Array

ursprüngliche Funktion

function getAccount(accountName) { 
    var accounts = Storage.getItemSync('accounts'); 
    var matchedAccount 
    for(account in accounts){ 
     if (account.name === accountName){ 
     matchedAccount = accountName; 
     } 
    } 

    return matchedAccount; 
} 

Arbeitsversion

function getAccount(accountName) { 
    var accounts = Storage.getItemSync('accounts'); 
    var matchedAccount 

    accounts.forEach(function(account) { 
     if(account.name === accountName){ 
      matchedAccount = account 
     } 
    }); 
    return matchedAccount; 

} 

Die ursprüngliche Funktion gibt Undefined zurück, während die Arbeitsversion die richtigen Ergebnisse zurückgibt. Warum passiert dies? Arbeite ich trotzdem über mein Array?

+2

Hinweis: Lesen Sie die Dokumentation von 'for..in' –

+0

Auch lesen Sie auf [Filter] (https: //developer.mozilla. org/de-DE/docs/Web/JavaScript/Referenz/Global_Objects/Array/filter) – Wainage

Antwort

1

Das ist einfach, aber immer noch eine gute Frage. In Javascript forEach Arbeiten auf Arrays während (for x in y) Arbeiten an Objekten *

während for..in auf Arrays funktioniert, weil es durch Objektfelder aufzählt, nicht Indizes.

sehen diese Antwort: Why is using "for...in" with array iteration a bad idea?

MDN docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in

+0

ah Ich habe es. Sinnvollerweise ist mein account.name kein Teil der aufzählbaren Eigenschaft des accounts -Arrays. Ich habe sowohl account als auch account.name protokolliert, eins gibt 0 zurück, das andere gibt undefined zurück. Was macht Sinn aus dem, was ich in den Dokumenten und dem Link gelesen habe. for .. in iteriert meine Array-Indizes! Vielen Dank! –

Verwandte Themen