Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.02.2010, 00:04
Кандидат Javascript-наук
Отправить личное сообщение для JAre Посмотреть профиль Найти все сообщения от JAre
 
Регистрация: 29.06.2009
Сообщений: 111

Краткость сестра таланта
Добрый вечер.

Проблемам:
...

var somestring = "зеленое яблоко";
var count =0;
var apple_color = "";

             if (somestring.search("зеленое") !== -1) {
                    apple_color = "зеленое";
                    count++;
                }
             if (somestring.search("желтое") !== -1) {
                    apple_color = "желтое";
                    count++;
                }
             if (somestring.search("красное") !== -1) {
                    apple_color = "красное";
                    count++;
                }
...

if (count !== 1) throw ('желтозеленое  яблоко или яблоко без цвета? ');

...


Это как-то совсем кривокосо. Хотелось бы что-то вроде:

var  colors = new Array(); 
var somestring = "зеленое яблоко";
var count =0;

...

each ( colors in somestring, function { count++; apple_color = this});
if (count !== 1) throw ('желтозеленое  яблоко или яблоко без цвета? ');


Как мне как-то так вот сделать?

Спасибо за внимание
Ответить с цитированием
  #2 (permalink)  
Старый 12.02.2010, 06:58
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

var str = 'зеленое яблоко',
     colors = ['красное','зеленое','желтое','гнилое'], i = 0, found = false;
for(; i < colors.length; i++)
     if(str.indexOf(colors[i])!=-1){
          found = true;
          break
     }
if(!found) throw "Что это за яблоко такое?";
Ответить с цитированием
  #3 (permalink)  
Старый 12.02.2010, 10:55
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

for (var i = colors.length; i--; )

Ответить с цитированием
  #4 (permalink)  
Старый 12.02.2010, 20:38
Кандидат Javascript-наук
Отправить личное сообщение для JAre Посмотреть профиль Найти все сообщения от JAre
 
Регистрация: 29.06.2009
Сообщений: 111

Избавится от копипаста это конечно хорошо. Но я имел в веду нечто в таком духе:
jquery
var str = 'желтое яблоко',
     colors = ['красное','зеленое','желтое','гнилое'], count = 0; apple_color = "";
	 
$.each(colors, function(index, value) {
  if (str.indexOf(value) !== -1) {
	if (count !== 0) throw "лишние цвета";
	count++;
	apple_color = value;
  }
  });
if (count !== 1) throw "а где цвет?";
alert("яблоко" + " " + apple_color);


Я как-то криво вопрос поставил. Более точная формулировка "что делает in в JS и можно ли как-то его применить к последовательностям?" Нагуливать удалось не сразу.

ЗЫ. Ухты! А я не знал, что так можно инициализировать переменные.

Последний раз редактировалось JAre, 12.02.2010 в 20:46.
Ответить с цитированием
  #5 (permalink)  
Старый 12.02.2010, 20:45
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

in

rez = 'какое то яблоко'.match(/красное|зеленое|желтое|гнилое/i);

if (rez&&rez.length==1) alert('яблоко: '+ rez[0]);
  else alert('Че за яблоко такое?');
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт

Последний раз редактировалось PeaceCoder, 12.02.2010 в 20:54.
Ответить с цитированием
  #6 (permalink)  
Старый 12.02.2010, 22:23
Кандидат Javascript-наук
Отправить личное сообщение для JAre Посмотреть профиль Найти все сообщения от JAre
 
Регистрация: 29.06.2009
Сообщений: 111

О! От это уже красиво - спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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