2013-04-30 24 views
11

Ich versuche, eine JavaScript-Funktion, die ein Array von Zeichenfolgen für einen Wert suchen und die nächste Zeichenfolge zurückgeben. Wenn zum Beispiel ein Array so aufgebaut ist, dass ein Artikel seinem Lagercode folgt, möchte ich nach dem Artikel suchen und den Lagercode schreiben lassen.Javascript: Generic Holen Sie sich das nächste Element in Array

var item = (from user input); //some code to get the initial item from user 
function findcode(code){ 
    var arr = ["ball", "1f7g", "spoon", "2c8d", "pen", "9c3c"]; //making the array 
    for (var i=0; i<arr.lenth; i++){ //for loop to look through array 
    arr.indexOf(item); //search array for whatever the user input was 
    var code = arr(i+1); //make the variable 'code' whatever comes next 
    break; 
    } 
} 
document.write(code); //write the code, I.e., whatever comes after the item 

(ich bin sicher, dass es offensichtlich ist, ich bin neu in JavaScript, und während dies zu einer Reihe von anderen Fragen ähnlich ist, fand ich, diejenigen schienen mehr beteiligt Arrays oder komplexere Abfragen zu haben. Ich kann‘ t scheinen sie für meine Bedürfnisse zu vereinfachen)

Antwort

38

Sie fast alles richtig gemacht haben, aber die Syntax ist arr[x], nicht arr(x).

index = array.indexOf(value); 
if(index >= 0 && index < array.length - 1) 
    nextItem = array[index + 1] 

BTW, könnte sein, ein ein Objekt anstelle eines Arrays mit bessere Option:

data = {"ball":"1f7g", "spoon":"2c8d", "pen":"9c3c"} 

und dann einfach

code = data[name] 
+2

+1 Nur hinzufügen, ['Array.indexOf' ist ES5] (https : //developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf) und funktioniert nicht mit älteren Browsern. – Joseph

+0

@ thg435 Vielen Dank! Genau das habe ich gebraucht. Und danke auch für die Objektalternative. – jak

+0

Einfach und nützlich, ist offensichtlich Bedingungen für vorherige Item muss sein (index> 0 && index QMaster

3

Ich denke, dass ein Objekt

items = { 
    ball : "1f7g", 
    spoon: "2c8d", 
    pen : "9c3c" 
} 


console.log(items['ball']); // 1f7g 
+0

+1 Ich frage mich, ob das OP wusste, dieses Verhalten ist Hash/assoziative Array? – booyaa

+0

@booyaa tat ich nicht, aber ich lese jetzt darüber nach. Danke :) – jak

+0

@jak Sie könnten es auch nützlich finden, über JSON zu lernen! – booyaa

0

Sie passieren können Array wahrscheinlich eine bessere Datenstruktur für diese Art von Aufgabe sein könnte als Argument funktionieren und Rückkehr Gefundener Wert von Funktion:

var item = "spoon"; // from user input 
var arr = ["ball", "1f7g", "spoon", "2c8d", "pen", "9c3c"]; //making the array 
function findcode(item, arr){ 
    var idx = arr.indexOf(item); //search array for whatever the user input was 
    if(idx >=0 && idx <= arr.length - 2) { // check index is in array bounds 
     return arr[i+1]; // return whatever comes next to item 
    } 
    return ''; 
} 
document.write(findcode(item, arr)); //write the code, i.e., whatever comes after the item 
Verwandte Themen