2013-04-30 14 views
11

Próbuję utworzyć funkcję JavaScript, która przeszuka tablicę łańcuchów dla wartości i zwróci następny ciąg znaków. Na przykład, jeśli tablica jest zbudowana w taki sposób, że po elemencie znajduje się jego kod giełdowy, chcę wyszukać przedmiot i napisać kod giełdowy.Javascript: Generic otrzymuję następny element w tablicy

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 

(jestem pewien, że to oczywiste, że jestem nowy w JavaScript, a gdy ta jest podobna do wielu innych pytań znalazłem ci, wydawało się, że bardziej zaangażowani tablic lub bardziej złożonych wyszukiwań. Nie mogę t wydają się uprościć je do moich potrzeb)

Odpowiedz

38

pan prawie miał rację, ale składnia jest arr[x], nie arr(x).

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

BTW, wykorzystując obiekt zamiast tablicy może być lepsza opcja:

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

a następnie po prostu

code = data[name] 
+2

+1 Wystarczy dodać, ['Array.indexOf' to ES5] (https : //developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf) i nie będzie działać na starszych przeglądarkach. – Joseph

+0

@ thg435 Dziękuję bardzo! Dokładnie tego potrzebowałem. I również dziękuję za alternatywę obiektu. – jak

+0

Proste i użyteczne, jest oczywiście warunki dla poprzedniej pozycji muszą być (indeks> 0 && index QMaster

3

myślę, że obiekt może być prawdopodobnie lepsza struktura danych dla tego rodzaju zadania

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


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

+1 Zastanawiam się, czy OP wiedział, że to zachowanie jest tablica asocjacyjna/asocjacyjna? – booyaa

+0

@booyaa Nie zrobiłem tego, ale teraz czytam o tym. Dzięki :) – jak

+0

@jak może Ci się przydać dowiedzieć o JSON! – booyaa

0

Możesz przekazać tablicę funkcjonować jako argument i powrotu znaleziona wartość z funkcji:

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 
Powiązane problemy