Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Поиск переменных по вхождению определённой строки в их название. (https://javascript.ru/forum/misc/50026-poisk-peremennykh-po-vkhozhdeniyu-opredeljonnojj-stroki-v-ikh-nazvanie.html)

Gomonoff 08.09.2014 13:42

Поиск переменных по вхождению определённой строки в их название.
 
Возможно ли найти переменные по вхождению определённой строки в её название.
Например:
var qwe_1 = 1;
var qwe_2 = 2;
var qwe_n = n;
var rty_45 = 45;

Надо выбрать переменные, которые начинаются на qwe

tsigel 08.09.2014 13:48

var obj = {

   qwe_1: 1,
   qwe_2: 2,
   qwe_n: "n",
   rty_45: 45

};

for (var key in obj) {

  if (key.indexOf("qwe") != -1) {
    alert(key + ", " + obj[key]);
  }

}


Такое можно сделать и с глобальными переменными (var key in window), но так делать не рекоменуется.

Octane 08.09.2014 13:55

Используй свойства объекта, вместо переменных:
var obj = {
    qwe_1: 1,
    qwe_2: 2,
    //qwe_n: n,
    rty_45: 45
};

var qwe = Object.keys(obj).filter(function (key) {
    return key.startsWith('qwe_');
});

alert(qwe);


Полифилы: String.prototype.startsWith, Object.keys, Array.prototype.filter

--------
долго писал :-(

Gomonoff 08.09.2014 14:37

Спасибо за ответы! Через объект всё понятно. А можно как-нибудь не используя глобальный window?

Aetae 08.09.2014 14:43

А может просто использовать массивы? Если у вас в коде есть переменные отличающиеся только циферкой на конце - с высокой вероятностью вы просто говнокодите.
var qwe = [1, 2, n];


Цитата:

Сообщение от Gomonoff (Сообщение 329523)
А можно как-нибудь не используя глобальный window?

Можно всё, но сложность не сравнима с результатом. Вы просто неправильно используете язык если у вас возникают подобные желания. Похожая тема.

Gomonoff 10.09.2014 12:12

Я прекрасно понимаю что это говнокод. Но! Задача стоит именно так. Пользователь описывает некоторые параметры на своём сайте (считается что он совсем дубень и ему будет сложно описать параметры внутри объекта). После этого подгружается скрипт со стороннего ресурса, собирает эти параметры и отправляет (в ответ приходит картинка).

Вопрос второй))) Есть вариант, что пользователь захочет получить два изображения. Т.е. он должен два раза описать один и тот же параметр (переменную) с разными значениями. Как сделать, чтобы они не "перетирали" друг друга, и как достучатся до них "пачками"?

MallSerg 10.09.2014 12:46

нужно более точное определение «некоторые параметры»
иначе под ним можно подразумевать все что угодно
а то писать логику обрабатывающую что угодно крайне сложно

ksa 10.09.2014 12:54

Цитата:

Сообщение от Gomonoff
Пользователь описывает некоторые параметры на своём сайте (считается что он совсем дубень и ему будет сложно описать параметры внутри объекта).

Путь тогда он их описывает в
<input type='hidden' name='тут_то_самое_имя' />

Gomonoff 10.09.2014 12:56

var name = '234234234';
var ext = 'jpg';

Gomonoff 10.09.2014 12:57

Цитата:

Сообщение от ksa (Сообщение 329861)
Путь тогда он их описывает в
<input type='hidden' name='тут_то_самое_имя' />

не не не... никак нельзя


Часовой пояс GMT +3, время: 17:46.