Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.07.2018, 10:17
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Условие при наличии двух совпадений
Добрый день. Помогите решить вопрос. У меня есть массив данных, внутри которого могут быть цифры, допустим от 1 до 10:
var array = [1,2,3,4,5,6,7,8,9,10];

Задаю условие, если в массиве есть такая то то цифра то условие выполняется, например:
for (i = 0; i < array.length; i++){
    if(array[i] == 5){
          // выполняем что нибудь
    }
    if(array[i] == 2){
          // выполняем что нибудь другое
    }
}

но, если в массиве есть несколько интересующих меня цифр, я не могу задать условие.
Я делал так, это не работает:
for (i = 0; i < array.length; i++){
    if(array[i] == 5 && array[i] == 2){
          // выполняем что нибудь эдокое
    }
}


Я примерно представляю что можно обойтись и без for:
array.indexOf('1');

Но не особо представляю как задать грамотно несколько значений.
Нужно чтобы если найдены несколько нужных совпадений не выполнялось условие где только одно совпадение, например:
if(array.indexOf('5') != -1){
          // выполняем что нибудь
}
if(array.indexOf('2') != -1){
          // выполняем что нибудь другое
}
if(array.indexOf('5') != -1 && array.indexOf('2') != -1){
          // выполняем что нибудь эдакое, но не выполняем все остальное где найдены те же цифры
}
Ответить с цитированием
  #2 (permalink)  
Старый 03.07.2018, 10:23
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

if(arr.includes(5) && arr.includes(2)) // что то делаем
else if(arr.includes(5)) // что то делаем
else if(arr.includes(2)) // что то делаем
Ответить с цитированием
  #3 (permalink)  
Старый 03.07.2018, 10:28
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

j0hnik,
Попробую, спасибо
Ответить с цитированием
  #4 (permalink)  
Старый 03.07.2018, 10:48
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Такс у меня заминка. Массив на самом деле примерно такой:
var array = [1,2,3, [{object:1},{object:2},{object:3}]]

Я пробовал написать так, но ничего не вышло:
array[3][0].object.includes(1) // так не вышло

Пишет нет такой функции, и только таким образом можно написать будет?:
for (i = 0; i < array[3].length; i++){
 if(array[3][i].object.includes(2)){
         //такие дела
   }


И да искать надо только в объекте array[3][i].object

Последний раз редактировалось Artur_Hopf, 03.07.2018 в 10:52.
Ответить с цитированием
  #5 (permalink)  
Старый 03.07.2018, 10:55
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

var str = JSON.stringify(array[3]);
if(str.includes(5) && str.includes(2))
else if(str.includes(5)) 
else if(str.includes(2))
Ответить с цитированием
  #6 (permalink)  
Старый 03.07.2018, 11:01
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

j0hnik,
var array = [1,2,3, [{object:1},{object:25},{object:3}]]
var str = JSON.stringify(array[3]);
if(str.includes(5) && str.includes(2)) alert('Ура!');
Ответить с цитированием
  #7 (permalink)  
Старый 03.07.2018, 11:03
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

j0hnik,
Спасибо, ато я уже опять за старое, хотел так сделать:
var number = [];
for (i = 0; i < array[3].length; i++){
       number[i] = + array[3][i].object;
}
number.includes(1)  // и тогдалие...


Спасибо
Ответить с цитированием
  #8 (permalink)  
Старый 03.07.2018, 11:06
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Dilettante_Pro,

var a = array[3].map(el=>el.object);

if(a.includes(5) && a.includes(2))
else if(a.includes(5)) 
else if(a.includes(2))
Ответить с цитированием
  #9 (permalink)  
Старый 03.07.2018, 11:11
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Dilettante_Pro,
j0hnik,
Спасибо вам
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
тело функции работает только при наличии alert sstasv Элементы интерфейса 7 31.08.2011 20:05
getAllResponseHeaders() и status имеют смысл только при readyState==4? mister_maxim AJAX и COMET 7 27.03.2011 19:08
Изменение стиля родительского элемента при :hover дочернего lanzs Элементы интерфейса 2 16.10.2010 13:28
суммирование значений двух текстовых инпутов при заполнении dolben Общие вопросы Javascript 4 19.08.2010 12:36
Возникает глюк при использовании двух плагинов dummer jQuery 5 23.12.2008 20:26