Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Условие при наличии двух совпадений (https://javascript.ru/forum/misc/74339-uslovie-pri-nalichii-dvukh-sovpadenijj.html)

Artur_Hopf 03.07.2018 10:17

Условие при наличии двух совпадений
 
Добрый день. Помогите решить вопрос. У меня есть массив данных, внутри которого могут быть цифры, допустим от 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){
          // выполняем что нибудь эдакое, но не выполняем все остальное где найдены те же цифры
}

j0hnik 03.07.2018 10:23

if(arr.includes(5) && arr.includes(2)) // что то делаем
else if(arr.includes(5)) // что то делаем
else if(arr.includes(2)) // что то делаем

Artur_Hopf 03.07.2018 10:28

j0hnik,
Попробую, спасибо :thanks:

Artur_Hopf 03.07.2018 10:48

Такс у меня заминка. Массив на самом деле примерно такой:
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

j0hnik 03.07.2018 10:55

var str = JSON.stringify(array[3]);
if(str.includes(5) && str.includes(2))
else if(str.includes(5)) 
else if(str.includes(2))

Dilettante_Pro 03.07.2018 11:01

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('Ура!');

Artur_Hopf 03.07.2018 11:03

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


Спасибо :thanks:

j0hnik 03.07.2018 11:06

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))

Artur_Hopf 03.07.2018 11:11

Dilettante_Pro,
j0hnik,
Спасибо вам :thanks:


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