#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть цикл
var names = ['apple', 'pear', 'something']
var age = ['12','344','132']
(у меня есть 20 таких переменных)
for (var i = 0; i < names.length; i ) {
Something(names[i]);
}
я получаю тип чего-либо с помощью jquery var name = $('[name=id]').val();
возможно ли выполнить if else, поэтому, если var name
равно любой из переменных, как здесь выше, тогда имена.длина изменится на эту.
Например, если результатом var name = $('[name=id]').val();
является возраст, то цикл изменится на
for (var i = 0; i < age.length; i ) {
Something(age[i]);
}
Комментарии:
1. Всякий раз, когда вы обнаруживаете, что хотите использовать динамические переменные, вам действительно следует использовать объект для сопоставления имен со значениями.
Ответ №1:
Да, если вы сохраняете эти переменные в объекте.
var container = {};
container.names = ['apple', 'pear', 'something'];
container.age = ['12','344','132'];
var name = $('[name=id]').val();
for (var i = 0; i < container[name].length; i ) {
Something(container[name][i]);
}
[править]
Вы также можете проверить, что то, что хранится в name
, соответствует допустимому массиву внутри вашего контейнера, вызвав Array.isArray(container[name])
.
Ответ №2:
Вы можете достичь этого совершенно другим способом.
Определите все свои переменные в объекте, как показано ниже.
var data = {
names: ['apple', 'pear', 'something'],
age: ['12','344','132'],
//...
}
здесь вы получаете тип
var name = $('[name=id]').val();
Теперь выполните цикл, как показано ниже, который должен быть таким, как ожидалось,
for (var i = 0; i < data[name].length; i ) {
Something(data[name][i]);
}
Комментарии:
1. Я вижу, @ValLeNain ответил, пока я готовил проект. Это правильное решение.
Ответ №3:
То, что вы говорите, может быть возможным в зависимости от области действия ваших переменных. Например, если они установлены глобально на window
, то вы потенциально могли бы использовать Something(window[name][i]);
, однако я бы не рекомендовал этого делать. Вместо этого я бы настроил ваш код с объектом вместо переменных, вот так:
var data = {
names: ['apple', 'pear', 'something'],
age: ['12', '344', '132']
};
Тогда вы можете просто делать то, что вы описываете:
var name = $('[name=id]').val();
for (var i = 0; i < data[name].length; i ) {
Something(data[name][i]);
}
Другой способ, которым вы могли бы это сделать, — создать функцию и передать соответствующую переменную:
var names = ['apple', 'pear', 'something']
var age = ['12','344','132']
function processItems(items) {
for (var i = 0; i < items.length; i ) {
Something(items[i]);
}
}
switch ($('[name=id]').val()) {
case 'name':
processItems(name);
break;
case 'age':
processItems(age);
break;
}