Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   if и else условие (https://javascript.ru/forum/misc/26851-if-i-else-uslovie.html)

مراد 27.03.2012 17:41

а как вывести текст вертикально?

مراد 27.03.2012 18:18

вертикальный текст
 
Вложений: 1
да нет нагерное
вот как на рисунке ВЕРТИКАЛЬНО
Вложение 1199

bes 27.03.2012 19:29

Ирония, Maxmaxmахimus, это, конечно, хорошо (хочешь, чтобы регулярные выражения представлялись не литерально, создай среду, в которой они будут представляться, например, схематически).

Но к чему лирика, если сам заварил эту кашу, приведя пример, по которому возникают вопросы.

Для эффективного применения предложенного тобой варианта решения, на мой взгляд, осталось разобраться с тем как досрочно выйти из функции forEach и с тем какие существуют варианты для возвращения значений из внутренней функции для этой forEach (вдобавок к предложенному мной), если знаешь, просвети.

مراد 27.03.2012 21:25

ааа... что там на счет вертикального текста;)

bes 27.03.2012 21:44

Maxmaxmахimus, давай решать задачи по порядку:
сначала доразберёмся с твоим примером,
потом, если владеешь информацией, можешь помочь мне в вопросе http://javascript.ru/forum/misc/2678...avascript.html,
ну а потом можно будет поговорить, как я понял, о твоей любимой теме - регулярных выражениях (средство не спорю мощное).

melky 27.03.2012 22:36

Цитата:

Сообщение от bes (Сообщение 165122)
Кроме того, следует понимать, что данный код не кроссбраузерный, так как функция forEach работает не во всех браузерах, в качестве альтернативы (со своими демонами) можно для обхода всех элементов массива использовать цикл for (например, вида for (var key in arr) {var val = arr[key]} ).

Обычно массив обходят по переменной, хранящей ссылку на число, с каждой итерацией которую проверяют, не больше ли она длины массива.
Ваш способ применяется в большинстве случаев для обхода объектов.

Цитата:

Сообщение от bes (Сообщение 165244)
Для эффективного применения предложенного тобой варианта решения, на мой взгляд, осталось разобраться с тем как досрочно выйти из функции forEach и с тем какие существуют варианты для возвращения значений из внутренней функции для этой forEach (вдобавок к предложенному мной), если знаешь, просвети.

forEach не предполагает ни возвращение значения, ни его прерывания. Метод предполагает "обойти массив, применив к каждому элементы оного функцию callback"

مراد 27.03.2012 22:49

Цитата:

Сообщение от مراد
ааа... что там на счет вертикального текста

люди!!!

можно ли переменной присвоить таблицу

Rootpassword 27.03.2012 23:04

Цитата:

Сообщение от مراد
можно ли переменной присвоить таблицу

переменной можно присвоить ссылку на таблицу

bes 27.03.2012 23:51

Спасибо, melky, за то, что подключился к нашей беседе.
Да, такой способ наверное наиболее подходит для данной ситуации (хотя и пробежаться по объектам-массивам можно), в цикл for и break можно вставить.

Не поленюсь, приведу, код подобного forEach работающего цикла для массива schedule (расчёт времени наверное логично вынести за пределы цикла).

Код:

for (i = 0; i < schedule.length; i++)
{
  var arrTimes = schedule[i][0].match( /\d+/g );

  if (hours >= arrTimes[0] &&
      hours <=  arrTimes[2] &&
      minutes >= arrTimes[1] &&                       
      minutes <  arrTimes[3])
  {alert(schedule[i][1]); break}
}

Что касается, функции forEach, если из неё точно не предусмотрен досрочный выход, то это печально (думается, что forEach, как раз и реализована таким циклом).
А результат работы внутренней функции в forEach можно вернуть через внешнюю переменную (я подумал может быть есть ещё какие-нибудь варианты).

рони 28.03.2012 16:19

مراد,
Вариант...
var schedule = [
	[900, 'Пары еще не начались '],
	[945, 'Первый час, первой пары '],
	[950, 'Перемена 5 минут '],
	[1035, 'Второй час, первой пары '],
    [1045, 'Конец первой пары. Перемена на 10 минут '],
    [1130, 'Первый час, второй пары '],
    [1135, 'Перемена 5 минут  '],
    [1220, 'Второй час, второй пары '],
    [1240, 'Большая перемена '],
    [1325, 'Первый час, третьей пары '],
    [1330, 'Перемена 5 минут '],
    [1415, 'Второй час, третьей пары '],
    [2359, 'Наконец то закончились эти пары ']
];


alert( testSchedule() );
function testSchedule() {
	var nowTime = new Date(), hours = nowTime.getHours(), minutes = nowTime.getMinutes();
	var def = '';
     for (var i=0; i<schedule.length; i++)  {
       def = schedule[i][1];
       if((hours*100)+minutes < schedule[i][0]) break;
         }
	return def;
}


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