Я пытаюсь создать функцию, которая вызывается несколькими разными кнопками и которая выбирает конкретный массив в зависимости от того, какая кнопка вызывала функцию.
Например:
Если кнопка с id="Anterior"
вызвала функцию, функция выбирает массив с именем plusAnterior
:
var plusAnterior = ["p", "b", "t", "d", "ɸ", "β", "f", "v", "θ", "ð", "s", "z", "m", "n", "l", "ɬ", "r", "ɾ"];
var minusAnterior = ["c", "ɟ", "k", "g", "ʃ", "ʒ", "x", "ɣ", "ɲ", "ŋ", "j", "w", "ʡ", "h"];
var toAdd = [];
function addFeature(featureId) {
if (activeFeatures === 0) {
toAdd = // plusAnterior called here
}
}
Проблема в том, что я не могу просто сделать toAdd = plusAnterior
потому что я хочу, чтобы моя функция работала для любой нажатой кнопки. Я думал о том, чтобы сделать что-то вроде getElementById("plus" + featureId)
, но я не могу, так как массивы, которые я пытаюсь выбрать, отсутствуют в моем HTML.
Спасибо за любую помощь.
В javascript вы можете использовать object
почти как массив ключ/значение.
var testObject = {
featureId_a: [1, 2, 3, 4, 5], // etc
featureId_b: [1, 2, 3, 4, 5] // etc
}
Тогда мы можем вернуть его с помощью вашего метода, так что...
function addFeature(featureId) {
return testObject[featureId];
}
Я думаю, это то, что вы имеете в виду. В противном случае вы можете использовать 2D-массив и выбирать на основе индекса. Но это зависит от ваших данных действительно лучший вариант.
Для краткости и некоторой дезинфекции, вы, конечно, должны проверить объект на предмет имущества.
if(testObject.hasOwnProperty(featureId)){
return testObject[featureId];
}