Проверка совпадения трех элементов массива JavaScript по циклам?

Не знаете, как правильно настроить циклы, чтобы проверить, соответствуют ли элементы в целевом массиве любым двум другим массивам или соответствуют им обоим:

Код:

let test = [1,2,3,4,5,6,7]
let test2 = [7,8,9,10,11]
let check_test = [2,7,10,12]

for (var testa in test) {
  for (var test2a in test2) {
     for (var check_testa in check_test) {
        #Triple for-loop trying to loop all arrays
        if (check_testa == testa && check_testa != test2) {
           console.log("Match TEST")
        } else if (check_testa != testa && check_testa == test2) {
           console.log("Match TEST2")
        } else if (check_testa == testa && check_testa == test2) {
           console.log("Both match!")
        } else {
           console.log("None match!")
       }
     }
   }
 }

По сути, код должен проверять, соответствуют ли элементы в массиве check_test каким-либо элементам в двух других массивах test и test2.

Если элемент (из check_test) соответствует элементам только в одном из двух других массивов, выведите «Match [test] or [test2]!». Если оба совпадают, выведите «Оба совпадают!» и, наконец, если оба не совпадают, выведите «None Match!»

И вывод для этого должен быть:

2 Match TEST!
7 Both Match!
10 Match TEST2!
12 None Match!

Итак, как правильно настроить циклы, чтобы они проверяли соответствие, а затем печатали элементы и выводили только один раз? Спасибо за чтение.

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
0
29
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам не нужен вложенный цикл. Используйте .includes, чтобы проверить, в каком из других массивов существует итерируемое значение (если есть), и не используйте in при переборе массивов (и если вы должны были использовать in, по крайней мере, получить доступ к значению в массиве с помощью нотации скобок, а не использовать только индекс ).

let test1 = [1,2,3,4,5,6,7];
let test2 = [7,8,9,10,11];
let check_test = [2,7,10,12];
for (const num of check_test) {
  const one = test1.includes(num);
  const two = test2.includes(num);
  if (one && two) {
    console.log('both');
  } else if (!one && !two) {
    console.log('neither');
  } else if (one) {
    console.log('one');
  } else {
    console.log('two');
  }
}

Я думаю, что ответ в порядке, но хотел бы указать, что есть еще вложенный цикл, просто более красивый, затененный встроенной функцией includes. Все еще O (n ^ 2).

danh 09.04.2022 19:18

Наконец-то сработало, спасибо. (Моя настоящая проблема слишком длинная, чтобы ее публиковать, поэтому я задал упрощенную проблему, но с той же концепцией.)

Peanut Jams 09.04.2022 19:53

Другие вопросы по теме