Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2018, 16:44   #1
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию Что можно использовать за место if?

Здравствуйте, подскажите, как можно упростить код, избавиться от if?
Код:
function praiceZeb() {
var widthval = $('input[name="width"]').val();
var heightval = $('input[name="height"]').val();	
var praiczeb; 
x = [40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 240, 250];
y = [100, 120, 140, 160, 180, 200, 220, 260, 300];

Array.prototype.nearest = function (i){return Math.min(...this.filter(x => x >= i));}
      xwidth = x.nearest(widthval);
	  yheight = y.nearest(heightval);
	  
if (maxH=='vide7' && categoria==0){praiczeb=(1470+2250*(xwidth-40)/100+(1425+0*(xwidth-40)/100)*(yheight-100)/100);}
if (maxH=='vide7' && categoria==1){praiczeb=(2805+2850*(xwidth-40)/100+(1935+0*(xwidth-40)/100)*(yheight-100)/100);}
if (maxH=='vide7' && categoria==2){praiczeb=(1410+2250*(xwidth-40)/100+(1445+0*(xwidth-40)/100)*(yheight-100)/100);}
if (maxH=='vide7' && categoria==3){praiczeb=(2815+2850*(xwidth-40)/100+(1920+0*(xwidth-40)/100)*(yheight-100)/100);}

if (maxH=='vide8' && categoria==0){praiczeb=(1400+2250*(xwidth-40)/100+(1425+0*(xwidth-40)/100)*(yheight-100)/100);}
if (maxH=='vide8' && categoria==1){praiczeb=(2825+2850*(xwidth-40)/100+(1900+0*(xwidth-40)/100)*(yheight-100)/100);}
if (maxH=='vide8' && categoria==2){praiczeb=(1480+2250*(xwidth-40)/100+(1425+0*(xwidth-40)/100)*(yheight-100)/100);}
if (maxH=='vide8' && categoria==3){praiczeb=(2885+2850*(xwidth-40)/100+(1900+0*(xwidth-40)/100)*(yheight-100)/100);}
return praiczeb;
};
Еду медленно, но верно!
spoon100500 вне форума Ответить с цитированием
Старый 15.08.2018, 18:01   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

От if обычно switch ом избавляются.https://learn.javascript.ru/switch
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 15.08.2018, 18:08   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Например:
Код:
function praiceZeb() {
    var widthval = $('input[name="width"]').val();
    var heightval = $('input[name="height"]').val();	
    x = [40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 240, 250];
    y = [100, 120, 140, 160, 180, 200, 220, 260, 300];
    data = {
        'vide7': [
            [1470, 2250, 1425],
            [2805, 2850, 1935],
            [1410, 2250, 1445],
            [2815, 2850, 1920]
        ],
        'vide8': [
            [1400, 2250, 1425],
            [0, 0, 0],
            [0, 0, 0],
            [0, 0, 0]
        ]
    };

Array.prototype.nearest = function (i){return Math.min(...this.filter(x => x >= i));}

    xwidth = x.nearest(widthval);
    yheight = y.nearest(heightval);
    [a, b, c] = data[maxH][categoria];
    return (a+b*(xwidth-40)/100+c*(yheight-100)/100);
};
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 15.08.2018, 23:22   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Например
Красиво! Респект!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.08.2018, 05:36   #5
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию

Круто, спасибо.

На хостинге выдает ошибку
Uncaught TypeError: data[maxH][categoria] is not iterable
На openserver работает норм, в чем может быть дело?

Чтоб добавить что-то к своему сообщению, используйте кнопку "Правка", а не пишите несколько сообщений подряд.
Еду медленно, но верно!

Последний раз редактировалось Вадим Мошев; 13.09.2018 в 17:42.
spoon100500 вне форума Ответить с цитированием
Старый 13.09.2018, 08:34   #6
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

это js - ему глубоко наплевать где сайт и чего там хостинг, он работает в браузере
ошибка пишет английским по белому - что не может перечислен быть массив
скорее всего где-то что-то не задано
сравните исходный код отдаваемый в браузер там где работает и там де не работает... как говорится найди разницу )))
ADSoft вне форума Ответить с цитированием
Старый 13.09.2018, 09:56   #7
spoon100500
Форумчанин
 
Аватар для spoon100500
 
Регистрация: 14.10.2016
Сообщений: 406
По умолчанию

Вроде как понимаю, что js пофиг где работать)) но думаю, спрошу на всякий случай)) вдруг подвох есть).

Спасибо, буду разбираться.

Чтоб добавить что-то к своему сообщению, используйте кнопку "Правка", а не пишите несколько сообщений подряд.
Еду медленно, но верно!

Последний раз редактировалось Вадим Мошев; 13.09.2018 в 17:43.
spoon100500 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли как-нибудь удалить, а затем вставить в нужное место в текстовике текст, не копируя весь документ. Jony217 PHP 3 17.01.2013 10:11
Как можно скопировать файл (изображение) с жёсткого диска в другое место через Pascal? wowiku Паскаль, Turbo Pascal, PascalABC.NET 1 15.04.2012 17:02
3d графики: что вообще есть и что лучше использовать Krasi Общие вопросы по Java, Java SE, Kotlin 1 09.05.2011 14:41
Как использовать файл в место массива? chugo Microsoft Office Word 10 23.08.2010 13:57
Что можно использовать вместо динамических массивов. Evgen1503 Общие вопросы Delphi 8 14.01.2010 21:54