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, время: 21:53. |