14.08.2015, 17:59
|
Аспирант
|
|
Регистрация: 27.02.2012
Сообщений: 67
|
|
состояние массива
Привет!
Как узнать, что это тот массив, который мне нужен?
Есть массив длиной 5 из bool переменных;
var arr = [];
arr[0]=document.getElementByID['cell'+(index-1)] ? true :false;
arr[1]=document.getElementByID['cell'+(index-2)] ? true :false;
arr[2]=true;
arr[3]=document.getElementByID['cell'+(index+1)] ? true :false;
arr[4]=document.getElementByID['cell'+(index+2)] ? true :false;
Массив принимает разные значения, исключение только 3 элемент, который всегда true. Мне нужно выловить момент, три true вместе идут, то есть:
Код:
|
[false, false, true, false, false] не подходить
[true, false, true, true, false] не подходить
[false, false, true, true, true] Подходить |
|
|
14.08.2015, 18:49
|
|
Профессор
|
|
Регистрация: 15.01.2015
Сообщений: 622
|
|
вариант, если нужно 3 или больше подряд идущих true выцепить
function fiveBoolean(a,b,c,d,e){
if (b)
if (a||d)
return true;
else return false;
else if(d)
return e;
}
alert(fiveBoolean(false, true, true, true, false));
alert(fiveBoolean(false, false, true, true, false));
alert(fiveBoolean(false, false, true, true, true));
Последний раз редактировалось EmperioAf, 14.08.2015 в 18:55.
|
|
14.08.2015, 18:52
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Берите срез массива, последние три его элемента, и суммируете их, если результат равен 3 - значит тот.
var check = array_name.slice(2).reduce(function(p, c) {
return p + c
});
Последний раз редактировалось laimas, 14.08.2015 в 19:56.
|
|
14.08.2015, 20:10
|
Аспирант
|
|
Регистрация: 27.02.2012
Сообщений: 67
|
|
Спасибо!
var check = function fiveBoolean(a,b,c,d,e){
if (b){
if (a&&c) return true;
if (c&&d) return true;
}
if (c){
if (b&&d) return true;
}
if (d){
if (c&&e) return true;
}
return false;
}
Последний раз редактировалось ild, 14.08.2015 в 20:24.
|
|
14.08.2015, 20:45
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
ild,
function check(a,b,c,d,e){
return a && b || b && d || d && e;
}
alert(check(true, false, true, false, true))//false
alert(check(false, false, true, true, true)) //true
alert(check(true, false, true, true, false))//false
Последний раз редактировалось рони, 14.08.2015 в 20:50.
|
|
14.08.2015, 20:52
|
|
Профессор
|
|
Регистрация: 15.01.2015
Сообщений: 622
|
|
Сообщение от рони
|
ild,
function check(a,b,c,d,e){
return a && b || b && d || d && e;
}
alert(check(true, false, true, false, true))//false
alert(check(false, false, true, true, true)) //true
alert(check(true, false, true, true, false))//false
|
блин, ну ты красавчик!! Не могу, к сожалению, плюсануть, но это такая красота!
|
|
14.08.2015, 21:05
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
рони,
только
function check(a,b,c,d,e){
return a && b || b && c || d && e;
}
alert(check(true, true, false, false, false)) //true
alert(check(false, true, true, false, false)) //true
alert(check(false, false, false, true, true)) //true
/(?:true){3,}/.test([false, false, true, true, true].join(''))
но я бы так не делал
function check(a,b,c,d,e){
return (a && b && c) || (b && c && d) || (c && d && e);
}
alert(check(true, true, false, false, false)) //false
alert(check(false, true, true, false, false)) //false
alert(check(false, false, false, true, true)) //false
alert(check(true, false, true, false, true))//false
alert(check(false, false, true, true, true)) //true
alert(check(true, false, true, true, false))//false
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Последний раз редактировалось nerv_, 14.08.2015 в 21:07.
|
|
14.08.2015, 21:11
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
nerv_,
всё ок без только - с по умолчанию true
Сообщение от ild
|
Массив принимает разные значения, исключение только 3 элемент, который всегда true.
|
а
Сообщение от nerv_
|
b && c
|
опечатка
давно исправлено на b && d
|
|
14.08.2015, 21:46
|
Аспирант
|
|
Регистрация: 27.02.2012
Сообщений: 67
|
|
Круто. Спасибо!
|
|
18.08.2015, 00:28
|
Аспирант
|
|
Регистрация: 27.02.2012
Сообщений: 67
|
|
а как подсчитать, сколько в данный момент в массиве количество true?
|
|
|
|