JavaScript Funktion: Wert Annahme, Durchsuchen eines mehrdimensionalen Arrays + Ausgabe

od-boy

Ensign
Registriert
Nov. 2007
Beiträge
225
Hallo,

die Suchfunktion konnte mir leider nicht helfen.

Ich soll einen globalen array mit fünf arrays erstellen. Jeder array soll Informationen über eine bestimmte Sprache besitzen:
- Name der Sprache
- (Haupt)Land der Sprache
- Anzahl der Sprecher (weltweit)

Dann soll eine Funktion einen Namen einer Sprache annehmen, diesen Namen im array suchen und wenn es gefunden wurde, dann soll die Funktion den entsprechenden array als kommagetrennten string ausgeben. Wenn der Name nicht gefunden wurde, dann soll false ausgegeben werden.

Meine bisherigen Gedanken:
Code:
<script>

var language = [];

language[0] = ["name"] = "German";
language[0] = ["area"] = "Germany";
language[0] = ["number"] = "98 million";

language[1] = ["name"] = "Spanish";
language[1] = ["area"] = "Spain";
language[1] = ["number"] = "447 million";

language[2] = ["name"] = "Russian";
language[2] = ["area"] = "Russia";
language[2] = ["number"] = "280 million";

language[3] = ["name"] = "French";
language[3] = ["area"] = "France";
language[3] = ["number"] = "115 million";

language[4] = ["name"] = "Italian";
language[4] = ["area"] = "Italy";
language[4] = ["number"] = "70 million";

function lang () {

keyword = prompt ('Please type in a language:', '');
Ist das soweit okay? Kann man nun weitergehend dies hier machen?
Code:
return (language.indexOf(keyword) != -1);
Leider habe ich noch überhaupt keine Ideen wie man die Funktion aufbauen kann, damit bei Fund ein String erstellt und bei Nicht-Fund die false-Meldung ausgegeben wird...

Ich hoffe ihr könnt einem Anfänger gut und verständlich helfen.

Danke,
Centurion
 
Zuletzt bearbeitet:
Hättest du es mal ausgeführt, dann wärst du jetzt schon schlauer. Dein Array hat eine ganz falsche Syntax.
Wenn du als Eingabe eine Sprache und als Ausgabe Land und Zahl haben willst, dann ist das so viel geschickter:
Code:
language["German"] = {"area":"Germany", "number":"98 million"};
Aufrufen kannst du es dann z.B. mit
Code:
language["German"]
Und für
Code:
language["Japanese"]
kriegst du den Wert undefined, genauso gut wie false.
 
Ich bin zwar kein Experte, was Javascript angeht, aber das hier
language[0] = ["name"] = "German";
scheint mir nicht richtig.
außerdem gibts bei Arrays normaleweise keine indexOf()-Funktion, vor allem nicht so, wie du sie gerne hättest.
Um herauszufinden, ob ein Array a ein bestimmtes Element e enthält, musst du in einer Schleife jedes Element von a mit e vergleichen, zB so: (Pseudocode)
Code:
for(i = 0;i <= a.length(); i++) {
    return a[i].equals(e);
}
return false;

Gruß Timo

Edit: Ach so, es soll sich um ein 2-dimensionales Array handeln...
Dann musst du obigen Pseudocode bissl umbauen.
 
Zuletzt bearbeitet:
Ich habe den Code nun geändert:
Code:
<script>

var language = [];

language["German"] = {"area":"Germany", "number":"98 million"};
language["Spanish"] = {"area":"Spain", "number":"447 million"};
language["Russian"] = {"area":"Russia", "number":"280 million"};
language["French"] = {"area":"France", "number":"115 million"};
language["Italian"] = {"area":"Italy", "number":"70 million"};

function lang () {

keyword = prompt ('Please type in a language:', '');
    for(i = 0;i <= language.length(); i++) {
    return language.equals(keyword);
    }
    return false;
}
document.write(language());
</script>
Wenn ich den Browser starte, soll ein Eingabefeld/fenster kommen, wo man dann eine Sprache eingibt und je nachdem, ob die eingegebene Sprache in den arrays gefunden worden ist, soll der Array aufeglistet werden (kommagetrennt), ansonsten einfach die Meldung false

Wie muss ich denn vorgehen? Wie muss ich den Code ergänzen/anpassen?
Ergänzung ()

Ich muss praktisch einen array of arrays erstellen, das habe ich nun so gemacht:
Code:
var language = [];

language["German"] = ["Germany", "98 million"];
language["Spanish"] = ["Spain", "447 million"];
language["Russian"] = ["Russia", "280 million"];
language["French"] = ["France", "115 million"];
language["Italian"] = ["Italy", "70 million"];

Wie programmiere ich jetzt aber die Funktion mit der Eingabe, Suche und entsprechende Ausgabe?
 
Zuletzt bearbeitet:
Mahlzeit,

Bitte korrigiert mich, wenn ich mich irre, aber

werden assoziative Arrays in JavaScript nicht als Objekt behandelt?

also:
Code:
var language = {};
language.German = ...

Da ich den genauen Wortlaut der Aufgabe nicht kenne (muss es ein "Array" sein, oder ist ein "Objekt" auch ok?),
könnte der erste Post des Threadstarters schon näher an der Lösung sein als der vor diesem...

Gruß
 
Hallo!

Arrays können keinen String als key bekommen. Dazu brauchst du Objekte.
Code:
    var language = {};
     
    language["German"] = ["Germany", "98 million"];
    language["Spanish"] = ["Spain", "447 million"];
    language["Russian"] = ["Russia", "280 million"];
    language["French"] = ["France", "115 million"];
    language["Italian"] = ["Italy", "70 million"];

Und um zu schauen, ob die Sprache im Objekt vorhanden ist, machst du einfach folgendes:
Code:
var s="German";

if(s in language){
  //dein Code hier
}
 
Zurück
Oben