28.08.2016, 23:47
|
Новичок на форуме
|
|
Регистрация: 26.08.2016
Сообщений: 7
|
|
if упростить
Есть вот такое условие:
if(contacts.type == 3 || contacts.type == 4 || contacts.type == 9 || contacts.type == 11 || contacts.type == 12 || contacts.type == 13){
template.admin(contacts);
} else if (contacts.type == 1 || contacts.type == 5 || contacts.type == 6 || contacts.type == 7 || contacts.type == 8 || contacts.type == 10){
template.ban(contacts);
}
а возможно ли как-то упростить его, что например contacts.type == 3,4,9,11,12,13
|
|
28.08.2016, 23:59
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
zbara,
if([3,4,9,11,12,13].indexOf(contacts.type)> -1)
|
|
29.08.2016, 10:27
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Есть еще
http://javascript.ru/switch
switch (contacts.type) {
case 3:
case 4:
case 9:
case 11:
case 11:
case 12:
case 13:
alert('Ok');
};
Такой подход...
var obj={
3: true,
4: true,
9: true,
11: true,
12: true,
13: true
}
if(obj[contacts.type]) alert('Ok');
Ну и вариант с массивом, описанный выше.
|
|
30.08.2016, 09:29
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Массив это чрезвычайно, switch это уполномочено, обычный логичный метод - реги:
if(/3|4|9|11|12|13/.exec(contacts.type))
|
|
30.08.2016, 09:39
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
А вообще вот так можно.
function test(v){
var tT={
'3|4|9|11|12|13':'admin',
'1|5|6|7|10':'ban'
};
for(var t in tT)
if(new RegExp(t).exec(v))
return tT[t];
}
test(4);
/*
admin
*/
А если заменить return tT[t];
на return template[tT[t]](contacts);
то будет all in wonder )))
|
|
30.08.2016, 09:54
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
warren buffet,
код усложнили и замедлили
|
|
30.08.2016, 09:57
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Насколько медленнее стало?
|
|
30.08.2016, 10:00
|
Профессор
|
|
Регистрация: 08.07.2016
Сообщений: 1,332
|
|
Любая абстракция усложняет, такова плата за следующий уровень. Зато харкодить не надо связи между тем и этим.
|
|
30.08.2016, 11:35
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Сообщение от warren buffet
|
обычный логичный метод - реги
|
Это как раз очень частный случай.
Поскольку в общем случае придется экранировать некоторые символы и код станет менее читабельным.
|
|
30.08.2016, 14:18
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
лучше массива (параметр) здесь нет ничего лучше, это довольно распространенная задача достаточно добавить диапазон c 11 по 33 усложнив при этом задачу
[3, 4, 9, [11, 33], 45]
|
|
|
|