Как при проверки сделать пропуск значений которые уже находил?

let arr = ['1', '2', '3', '4', '4', '4', '5', '5', '6', '7', '8'];
for (let i in arr) {
  if (['1', '2', '3', '4', '5', '6'].some(e => e === arr[i])) {
    console.log(arr[i]);
    // из массива arr нужно взять ['1', '2', '3', '4', '5', '6']
  }
}

console.log('---');

arr = ['1', '2', '3', '4', '4', '4', '5', '5', '6', '7', '8'];
for (let i in arr) {
  if (['1', '3', '4'].some(e => e === arr[i])) {
    console.log(arr[i]);
    // из массива arr нужно взять ['1', '2', '4']
  }
}


Ответы (1 шт):

Автор решения: Leonid

Предлагаю зайти с обратной стороны и проходиться только по уникальным элементам.

let arr = ['1', '2', '3', '4', '4', '4', '5', '5', '6', '7', '8'];
let unique_arr = [...new Set(arr)];

for (let i in unique_arr) {
    console.log(unique_arr[i]);
}

Если смысл надо воспроизвести буквально, с проверкой пройденных элементов:

let arr = ['1', '2', '3', '4', '4', '4', '5', '5', '6', '7', '8'];
let unique_arr = new Set();

for (let i in arr) {    
    if(!unique_arr.has(arr[i])){
        console.log(arr[i]);
    } 
    unique_arr.add(arr[i]);
}

→ Ссылка