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