web-dev-qa-db-fra.com

Javascript: générique obtenir le prochain élément du tableau

J'essaie de créer une fonction JavaScript qui recherchera une valeur dans un tableau de chaînes et renverra la chaîne suivante. Par exemple, si un tableau est construit de manière à ce qu'un élément soit suivi de son code stock, je souhaite rechercher l'élément et faire écrire le code stock.

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

(Je suis sûr que c’est évident que je suis nouveau en JavaScript, et bien que cela ressemble à un certain nombre de questions que j’ai trouvées, celles-ci semblaient comporter davantage de tableaux ou de recherches plus complexes. Je n'arrive pas à les simplifier pour le Besoins.)

15
jak

Vous avez presque tout compris, mais la syntaxe est arr[x], pas arr(x):

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

BTW, en utilisant un objet au lieu d'un tableau pourrait être une meilleure option:

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

et puis simplement

code = data[name]
45
georg

Je pense qu'un objet pourrait être probablement une meilleure structure de données pour ce genre de tâche

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


console.log(items['ball']); // 1f7g
3
fcalderan

Articles cyclés du tableau cela pourrait être utile 

const currentIndex = items.indexOf(currentItem);
const nextIndex = (currentIndex + 1) % items.length;
items[nextIndex];

Le premier élément sera pris au début du tableau après le dernier élément

1
SerzN1

Vous pouvez passer un tableau comme argument et renvoyer une valeur trouvée à une fonction

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
0
Vadim