Как создать функцию для выбора конкретного массива?

1

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

Например:

Если кнопка с 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.

Спасибо за любую помощь.

  • 0
    @EmilieHass, почему вы вызываете getElementById для получения структуры данных javascript? getElementById строго для элементов DOM.
  • 0
    @andreihondrari, я думаю, он сказал то же самое в последнем предложении.
Показать ещё 1 комментарий
Теги:
arrays

1 ответ

3

В 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];
}
  • 1
    Я думаю, это то, что я искал! Большое спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню