Как вызвать функцию с другими параметрами в зависимости от условия
Допустим, есть функция, принимающая параметр j и условие
if (num === 1) { function(1); } else if (num === 2) { function(1); function(2); } else if (num === 3) { function(1); function(2); function(3); } Как записать это попроще и в обобщенному случае? То есть наподобие if (num === j) { сделай функцию j раз и с разными параметрами } Прошу помощи в этом. Просто не знаю даже как загуглить. Заранее спасибо. |
Функция может быть одна, и несколько раз ее вызывать нет смысла, если изменять надо только параметры ее. Значит передавайте в качестве параметров массив, в контексте примера от 1 до N.
|
А как записать не подскажете, ведь не так ведь - function ([1, 2, ...])?
|
Ну если вы знаете содержимое массива, то почему и нет, можете и так передать function ([1, 2, ...]).
Вопрос у вас резиновый, философский. Если по вашему описанию, в зависимости от значения некой переменной, которая может иметь значение от 1 до N нужно передать в функцию эту последовательность, то опишите ее в массиве, и тогда операнд условия будет определять количество элементов среза описанного массива. В этом случае прописывать явно элементы массива в передаваемом параметре функции не будет необходимости. |
У меня ошибка в общем-то получается. Если смиотреть конкретней
function append(i) { document.getElementById('x'+self.X[i]+'y'+self.Y[i]).appendChild(self.cell1[i]); } Условие: if (num === 8) { append(1); append(2); append(3); ... append(8); } |
Ну еще бы ее не было.
Еще раз сначала о методе передачи - у вас операнд определяет окончание последовательности, которую нужно передать в функцию. Так зачем повторять это число раз вызов функции, если можно передать срез массива заведомо известной коллекции или же просто передать этот операнд в функцию, выполнив это число раз действие в ней? При этом условий if (num === N) не требуется, просто append(num); Что касается самой функции, то если это и все, то это бедлам. |
Basil_JS,
for(var i = 1; i <= num; i++) { myFunc(i); } |
Мне придется делать это 241 раз, и я очень сильно упростил, так что вполне оправдано не писать вот такое
function(1); ... function(241); |
Basil_JS, лучше передавай тогда в ф-цию количество запусков, и пусть код внутри ф-ции выполняется столько количество раз, которому соответствует передаваемый аргумент.
function append(len) { for(var i = 1; i <= len; i++) { document.getElementById('x' + self.X[i] + 'y' + self.Y[i]).appendChild(self.cell1[i]); } } Тогда условия можно будет писать просто вот так: if(num == 8) { append(8); } Но лучше тогда вообще условия убрать и использовать просто: append(num); |
Часовой пояс GMT +3, время: 01:04. |