Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.08.2015, 17:59
ild ild вне форума
Аспирант
Отправить личное сообщение для ild Посмотреть профиль Найти все сообщения от ild
 
Регистрация: 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] Подходить
Ответить с цитированием
  #2 (permalink)  
Старый 14.08.2015, 18:49
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 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.
Ответить с цитированием
  #3 (permalink)  
Старый 14.08.2015, 18:52
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 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.
Ответить с цитированием
  #4 (permalink)  
Старый 14.08.2015, 20:10
ild ild вне форума
Аспирант
Отправить личное сообщение для ild Посмотреть профиль Найти все сообщения от ild
 
Регистрация: 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.
Ответить с цитированием
  #5 (permalink)  
Старый 14.08.2015, 20:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

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.
Ответить с цитированием
  #6 (permalink)  
Старый 14.08.2015, 20:52
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 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
блин, ну ты красавчик!! Не могу, к сожалению, плюсануть, но это такая красота!
Ответить с цитированием
  #7 (permalink)  
Старый 14.08.2015, 21:05
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 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.
Ответить с цитированием
  #8 (permalink)  
Старый 14.08.2015, 21:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

nerv_,
всё ок без только - с по умолчанию true
Сообщение от ild
Массив принимает разные значения, исключение только 3 элемент, который всегда true.
а
Сообщение от nerv_
b && c
опечатка
давно исправлено на b && d
Ответить с цитированием
  #9 (permalink)  
Старый 14.08.2015, 21:46
ild ild вне форума
Аспирант
Отправить личное сообщение для ild Посмотреть профиль Найти все сообщения от ild
 
Регистрация: 27.02.2012
Сообщений: 67

Круто. Спасибо!
Ответить с цитированием
  #10 (permalink)  
Старый 18.08.2015, 00:28
ild ild вне форума
Аспирант
Отправить личное сообщение для ild Посмотреть профиль Найти все сообщения от ild
 
Регистрация: 27.02.2012
Сообщений: 67

а как подсчитать, сколько в данный момент в массиве количество true?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите к js коду, написать html код Modrih Элементы интерфейса 8 16.06.2015 18:08
Ввод диапазона значений массива с клавиатуры Воскобоенко Общие вопросы Javascript 11 06.06.2015 22:34
Обращение к элементу массива arkada38 Angular.js 2 05.12.2014 10:08
Сортировка массива по возрастанию другого массива. vas88811 Events/DOM/Window 4 12.01.2014 10:31
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53