Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите сократить код (https://javascript.ru/forum/misc/57850-pomogite-sokratit-kod.html)

nikto93i7 23.08.2015 13:43

Помогите сократить код
 
Привет всем!) Прошу помочь с кодом (сократить его). :write:
Думаю, что проще все будет выглядеть с помощью счетчика...

Код рабочий, но выглядет страшно и совсем безграмотно :(
function positive() {
    if ($("#term1").val() == 1){
	positiveUp = [ 0, tcoSavings()];
	return positiveUp
    } else if ($("#term1").val() == 2) {
    positiveUp = [ 0, tcoSavings(), tcoSavings()];
	return positiveUp
    } else if ($("#term1").val() == 3) {
    positiveUp = [ 0, tcoSavings(), tcoSavings(), tcoSavings()];
	return positiveUp
    } else if ($("#term1").val() == 4) {
    positiveUp = [ 0, tcoSavings(), tcoSavings(), tcoSavings(), tcoSavings()];
	return positiveUp
    } else if ($("#term1").val() == 5) {
    positiveUp = [ 0, tcoSavings(), tcoSavings(), tcoSavings(), tcoSavings(),
 tcoSavings()];
	return positiveUp
    } else if ($("#term1").val() == 6) {
    positiveUp = [ 0, tcoSavings(), tcoSavings(), tcoSavings(), tcoSavings(),
 tcoSavings(), tcoSavings()];
	return positiveUp
    } else if ($("#term1").val() == 7) {
    positiveUp = [ 0, tcoSavings(), tcoSavings(), tcoSavings(), tcoSavings(),
 tcoSavings(), tcoSavings(), tcoSavings()];
	return positiveUp
    } else if ($("#term1").val() == 8) {
    positiveUp = [ 0, tcoSavings(), tcoSavings(), tcoSavings(), tcoSavings(),
 tcoSavings(), tcoSavings(), tcoSavings(), tcoSavings()];
	return positiveUp
    } else if ($("#term1").val() == 9) {
    positiveUp = [ 0, tcoSavings(), tcoSavings(), tcoSavings(), tcoSavings(),
 tcoSavings(), tcoSavings(), tcoSavings(), tcoSavings(), tcoSavings()];
	return positiveUp
    } else if ($("#term1").val() == 10) {
    positiveUp = [ 0, tcoSavings(), tcoSavings(), tcoSavings(), tcoSavings(),
 tcoSavings(), tcoSavings(), tcoSavings(), tcoSavings(), tcoSavings(), tcoSavings()];
	return positiveUp
    }
};


Буду признателен за помощь ;)

ild 23.08.2015 13:59

function positive() {
	return [ 0, tcoSavings($("#term1").val())];
};

nikto93i7 23.08.2015 14:06

Что-то странный совет... такое не работает и не будет работать

ild 23.08.2015 14:16

Я не знаю что там в функции tcoSavings(), но вместо 10 вызова просто ему даем цифру 10, чтобы вернул что-то 10 раз, то есть немного там тоже нужно изменить

KosBeg 23.08.2015 14:18

примерно так
tcoSavings = function ( ) { // я не знаю вашу функцию, по этому просто "заглушка"
  return 1
}

function positive() {
//  var data = $("#term1").val(), // кешируем значение, так как зачем нам лишнее обращение к DOM’у?
  var data = 10, // чисто для примера
  arr = [0];
  if(typeof data === 'number') { // проверка на цифру, наверное это ненужно, но всеже
    for (; data; data--) {
      arr.push(tcoSavings())
	}
    return arr
  }
}

alert(positive())

KosBeg 23.08.2015 14:23

Блин, я в шоке от своего говнокода
ОН РАБОТАЕТ)))

nikto93i7 23.08.2015 14:33

От своего или моего? :D

KosBeg 23.08.2015 14:37

Цитата:

Сообщение от nikto93i7
От своего или моего? :D

Цитата:

Сообщение от KosBeg
я в шоке от своего говнокода

а хоть так как нужно работает?

nikto93i7 23.08.2015 14:50

пока нет, но вроде уже сам разбираться начал)))
tcoSavings() - это число, которое подставляется в массив.
допустим, при выборе ($("#term1").val() == 7), должен выводиться массив positiveUp = [ 0, 5000, 5000, 5000, 5000, 5000, 5000, 5000];

рони 23.08.2015 15:05

nikto93i7,
вам же давали решение для таких случаев
http://javascript.ru/forum/jquery/57...tml#post384621


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