Javascript: Generic получить следующий элемент в массиве

Я пытаюсь сделать функцию JavaScript, которая будет искать массив строк для значения и возвращать следующую строку. Например, если массив построен таким образом, что за элементом следует его код запаса, я хочу найти элемент и записать код запаса.

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

(Я уверен, что очевидно, что я новичок в JavaScript, и хотя это похоже на ряд других вопросов, которые я обнаружил, у них, казалось, были более сложные массивы или более сложные запросы. Я не могу упростить их для своих необходимо.)

Ответ 1

Вы почти правильно поняли, но синтаксис is arr[x], а не arr(x):

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

BTW, использование объекта вместо массива может быть лучшим вариантом:

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

а затем просто

code = data[name]

Ответ 2

Я думаю, что объект может быть, вероятно, лучшей структурой данных для такого рода задач

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


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

Ответ 3

Вы можете передать массив для функции в качестве аргумента и вернуть найденное значение из функции:

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