Краткость сестра таланта
Добрый вечер.
Проблемам:
...
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 ('желтозеленое яблоко или яблоко без цвета? ');
Как мне как-то так вот сделать? Спасибо за внимание :) |
var str = 'зеленое яблоко',
colors = ['красное','зеленое','желтое','гнилое'], i = 0, found = false;
for(; i < colors.length; i++)
if(str.indexOf(colors[i])!=-1){
found = true;
break
}
if(!found) throw "Что это за яблоко такое?";
|
for (var i = colors.length; i--; ) ;) |
Избавится от копипаста это конечно хорошо. Но я имел в веду нечто в таком духе:
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 и можно ли как-то его применить к последовательностям?" Нагуливать удалось не сразу. ЗЫ. Ухты! А я не знал, что так можно инициализировать переменные. |
in
rez = 'какое то яблоко'.match(/красное|зеленое|желтое|гнилое/i);
if (rez&&rez.length==1) alert('яблоко: '+ rez[0]);
else alert('Че за яблоко такое?');
|
О! От это уже красиво - спасибо :)
|
| Часовой пояс GMT +3, время: 17:42. |