Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   как написать условие? (https://javascript.ru/forum/dom-window/51860-kak-napisat-uslovie.html)

imedia 22.11.2014 15:28

как написать условие?
 
как написать условие?
если значение любого из селектов > 0

danik.js 22.11.2014 16:10

ES5 пример:
<select>
<option value=0>Value 0</option>
<option value=1>Value 1</option>
</select>

<select>
<option value=0>Value 0</option>
<option value=1>Value 1</option>
</select>

<button>Проверить</button>

<script>
Array.some || (Array.some = Function.prototype.call.bind(Array.prototype.some));

var selects = document.querySelectorAll('select');

function check() {
	var someIsPositive = Array.some(selects, function(select) {
		return select.value > 0;
	});

	if (someIsPositive) {
		alert('Есть положительные');
	} else {
		alert('Все нулевые');
	}
}


document.querySelector('button').onclick = check;
</script>

krutoy 22.11.2014 16:12

test=function(arr){
try{arr.forEach(function(el){if(el<1) throw false})}catch(e){return e}
return true
}
alert(test([1,2,3,4,5]))
alert(test([1,2,0,4,5]))
//  true
//  false

danik.js 22.11.2014 16:19

krutoy, предлагаю тебе мигрировать на другой портал: http://govnokod.ru/
Тебе там будет комфортно :)
Но подход, да, интересный. В нескольких случаях его использовал.

krutoy 22.11.2014 16:58

<!DOCTYPE HTML>
<html>
  <head><meta charset="windows-1251" /> </head>
  <body>

<select>
<option value=0>Value 0</option>
<option value=1>Value 1</option>
</select>
 
<select>
<option value=0>Value 0</option>
<option value=1>Value 1</option>
</select>
 
<button>Проверить</button>
 
<script>

test=function(){
  var sels = document.getElementsByTagName('select'), arr=[]
  for(var i=0; i<sels.length; i++) arr.push(sels[i].value)
  try{arr.forEach(function(el){if(el<1) throw false})}catch(e){return e}
  return true
}
document.querySelector('button').onclick = function(){alert(test())};

</script>
    </script>
  </body>
</html>

рони 22.11.2014 17:15

Цитата:

Сообщение от krutoy
windows-1251

а почему?

krutoy 22.11.2014 17:24

рони,
А почему нет? Вообще, я где то слышал, что windows-1251 быстрей.

Erolast 22.11.2014 17:24

Цитата:

Но подход, да, интересный. В нескольких случаях его использовал.
Зачем? :blink:
var someIsPositive = false;
for (var i = 0; i < selects.length; i++) {
  if (+[i].value > 0)
    someIsPositive = true;
}

krutoy 22.11.2014 17:28

Erolast,
forEach - более высокоуровневая конструкция, с ней проще, уровень абстракции другой, проще комбинировать.

danik.js 22.11.2014 17:55

Цитата:

Сообщение от Erolast
Зачем?

Как зачем? Чтобы прервать выполнение кода и передать управление обратно. При этом глубина цепочки вызовов может быть больше одного вызова )

Я то не про forEach говорю. А krutoy, просто не в курсе про some() вот и пишет, как обычно, говнокод )
А может намеренно это делает. Хотя нет, не буду его переоценивать )

danik.js 22.11.2014 17:57

Erolast, кстати break забыл. Или вынести в функцию и делать return

danik.js 22.11.2014 17:59

Цитата:

Сообщение от Erolast
if (+

Кстати, зачем тут плюс?

рони 22.11.2014 18:15

:write:
for (var i = 0; i < selects.length; i++) {
  if (!selects[i].value)
    return false;
}
return true

Erolast 22.11.2014 18:57

Цитата:

Сообщение от danik.js
кстати break забыл ... зачем тут плюс?

Туплю что-то) плюс незачем.
Цитата:

При этом глубина цепочки вызовов может быть больше одного вызова )
Метки? Либо да, функцией.

Erolast 22.11.2014 18:59

Цитата:

Сообщение от krutoy (Сообщение 342360)
Erolast,
forEach - более высокоуровневая конструкция, с ней проще, уровень абстракции другой, проще комбинировать.

Я не о фориче, я о танцах с ошибками.

krutoy 22.11.2014 19:04

Erolast,
Там нет никаких танцев с ошибками.

krutoy 22.11.2014 19:11

danik.js,
Ты, значит употребил в коде новую свистоперделку, и он стал от этого лучше? Минималистичней, компактней, выразительней? Да вроде нет, наоборот, все длинней и мутней, в плане совместимости -- хуже. Тогда почему ты раскраснелся от счастья? Смотри не лопни.

Erolast 22.11.2014 19:15

Цитата:

Там нет никаких танцев с ошибками.
А что же это там? Хуле отлов и выброс исключений используется не по назначению, да в таком месте, где без этого можно обойтись?

krutoy 22.11.2014 19:21

Erolast,
Отвали со своим тупняком, тебе выше объяснили, читай, блять

Erolast 22.11.2014 19:25

Ты о себе уже во вмножественном числе говоришь :D

рони 22.11.2014 19:25

krutoy,
тоже непонимаю использования везде try , for in и 1251

krutoy 22.11.2014 19:27

Erolast,
Тебе другие объясняли не я, даник тебе объяснял. Он хоть и клоун, но хоть что-то в голове есть в отличии от.

krutoy 22.11.2014 19:30

рони,
try используется для нелокального выхода, считай, что это goto. for in мне нравится, потому что JS -- это не сишка, это высокоуровневый язык. Впадлу числодрочевом мне заниматься. win-1251 я использую, потому что у меня венда щас стоит, и мне лень перекодировать.

krutoy 22.11.2014 19:43

рони,
А я, кстати, вот этого не понял
for (var i = 0; i < selects.length; i++) {
  if (![i].value)
    return false;
}
return true

На что указывает [i]?

рони 22.11.2014 19:50

Цитата:

Сообщение от krutoy
На что указывает [i]?

добавил selects

krutoy 22.11.2014 19:57

danik.js,
И вот еще что, кстати, зачем ты используешь вот эту
Array.some || (Array.some = Function.prototype.call.bind(Array.prototype.some));

еб*тую конструкцию, смысла которой сам не понимаешь, если [].some.call должен работать везде точно также?

danik.js 22.11.2014 19:59

Цитата:

Сообщение от krutoy
Ты, значит употребил в коде новую свистоперделку, и он стал от этого лучше?

some не новее forEach, болван )

Цитата:

Сообщение от krutoy
Минималистичней, компактней, выразительней?

Ты за*бал тупить уже.
Твое дерьмо:
Цитата:

Сообщение от krutoy
test=function(arr){
try{arr.forEach(function(el){if(el<1) throw false})}catch(e){return e}
return true
}
alert(test([1,2,3,4,5]))
alert(test([1,2,0,4,5]))
//  true
//  false

Моя вкусняшка:
var test = function(array){
    return array.some(function(element) { return element > 0 });
};
alert(test([0,0,3,0,5]))
alert(test([0,0,0,0,0]))
//  true
//  false


Ты кстати затупил. Перечитай вопрос тс.

Если ты про дженерик Array.*, то это всего лишь вариант. Мне он нравится, я показал как его кроссбраузерно использовать. Можно и без него прожить.

danik.js 22.11.2014 20:01

Цитата:

Сообщение от krutoy
не я, даник тебе объяснял

Вот именно:
Цитата:

Сообщение от danik.js
А krutoy, просто не в курсе про some() вот и пишет, как обычно, говнокод )

Че еще непонятно, а?

danik.js 22.11.2014 20:06

Цитата:

Сообщение от krutoy
смысла которой сам не понимаешь

Как же я ее блядь написал, по-твоему ))
Цитата:

Сообщение от krutoy
[].some.call

Уродство же. Лучше уродство спрятать где-нибудь (вначале), а в основном коде уже писать с удовольствием. Бонус - оптимизация для Firefox'а, и возможно для других будущих браузеров.

krutoy 22.11.2014 20:12

Цитата:

Сообщение от danik.js
Бонус - оптимизация для Firefox'а

Откуда берется оптимизация?

krutoy 22.11.2014 20:15

Цитата:

Сообщение от danik.js
Как же я ее блядь написал, по-твоему

Ты написал ее либо методом тыка, либо скопипиздил откуда то. Я не верю, что человек сознательно, и с пониманием дела напишет такую ахинею. Сможешь объяснить, что она делает? то что до || можешь выкинуть, начинай от присваивания.

danik.js 22.11.2014 20:26

Хули там объяснять. Чтоб не писать some.call, привязали контекст (some) намертво, через bind. Вот и все.

danik.js 22.11.2014 20:30

Вообще, F# изменил мое сознание. Всем советую.

krutoy 22.11.2014 20:32

Цитата:

Сообщение от danik.js
привязали контекст (some) намертво, через bind

К чему привязали?

devote 22.11.2014 20:41

Цитата:

Сообщение от krutoy
что windows-1251 быстрей.

:D как кодировка может быть быстрей?

Цитата:

Сообщение от krutoy
К чему привязали?

если ты умен, а ты себя таковым считаешь, значит должен знать что там происходит.

PS. krutoy, danik.js, Вы оба немного напрягаете. Ваши оскорбления, цензура и т.д. напрягают. danik.js, будь проще не обращай внимание на него. Ты же знаешь, он по выкобенивается, по понтуется, а спустя время осознает что был не прав. Как собственно и многие здесь проходили через это. Пусть колотит себя в груди доказывая что он крут, его право. Но время всегда всех меняет.

krutoy 22.11.2014 20:45

Цитата:

Сообщение от devote
как кодировка может быть быстрей?

Потому что юникод кодируется бОльшим числом символов. Самая быстрая кодировка -- это ascii. utf -- одна из самых медленных, если не самая.
Цитата:

Сообщение от devote
значит должен знать что там происходит.

Я то знаю, вопрос, знает ли он.

danik.js 22.11.2014 20:48

Цитата:

Сообщение от krutoy
вопрос, знает ли он

Знаю, можешь за меня не волноваться :)

Вот чего я не знаю - так это судьбу Array.some и прочих "статических" методов. Они хоть есть в каком-нибудь стандарте?

krutoy 22.11.2014 20:53

Цитата:

Сообщение от danik.js
Они хоть есть в каком-нибудь стандарте?

Не знаю, я почти не читаю стандарты, предпочитаю метод научного тыка. И я не понимаю смысла этих "статических" методов, нахрен они вообще нужны? Привязать к функции, ради того, чтобы было привязано? Какой смысл? По-моему, они фигню порют, и разводят зоопарк несовместимостей.

Erolast 22.11.2014 21:01

Цитата:

Сообщение от krutoy (Сообщение 342360)
он по выкобенивается, по понтуется, а спустя время осознает что был не прав. Как собственно и многие здесь проходили через это. Пусть колотит себя в груди доказывая что он крут, его право. Но время всегда всех меняет.

Он же тролль.

devote 22.11.2014 21:06

Цитата:

Сообщение от krutoy
Потому что юникод кодируется бОльшим числом символов. Самая быстрая кодировка -- это ascii. utf -- одна из самых медленных, если не самая.

в том то и дело что кодировка не может быть быстрее или медленнее... Вот обработка ее да, вполне соглашусь... Хотя скорости там не значительные, а во вторых не ты же этим занимаешься, а операционная система. Дык и не всели равно какую кодировку ос обрабатывает. Тем более в наши то времена, в пору далеко не слабых компов.

На заметку. JavaScript'у более предпочтительно все же работать с UTF-8 так как это его родная кодировка.


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