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 |
zbara,
if([3,4,9,11,12,13].indexOf(contacts.type)> -1) |
Есть еще
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');
Ну и вариант с массивом, описанный выше. :) |
Массив это чрезвычайно, switch это уполномочено, обычный логичный метод - реги:
if(/3|4|9|11|12|13/.exec(contacts.type)) |
А вообще вот так можно.
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 ))) |
warren buffet,
код усложнили и замедлили |
Насколько медленнее стало?
|
Любая абстракция усложняет, такова плата за следующий уровень. Зато харкодить не надо связи между тем и этим.
|
Цитата:
Поскольку в общем случае придется экранировать некоторые символы и код станет менее читабельным. |
лучше массива (параметр) здесь нет ничего лучше, это довольно распространенная задача достаточно добавить диапазон c 11 по 33 усложнив при этом задачу
[3, 4, 9, [11, 33], 45] |
| Часовой пояс GMT +3, время: 12:50. |