Объединить в один массив

113
13 января 2021, 10:30

Как объединить все вложенные массивы в один и если будут повторяющиеся элементы, то убрать их. Например 12,13 буду встречаться в итоговом едином массиве один раз. Массив генерируется с сервера, так-что нужен будет универсальный цикл

var arr = [
  [23, 26, 37, 38, 43, 44],
  [12, 13, 23, 26, 33, 34, 37, 38, 43, 44],
  [12, 13, 23, 26, 33, 34, 37, 38, 43, 44]
];
Answer 1

Если используется достаточно современный стандарт, то можно очень легко сделать вот так:

var arr = [ 
  [23, 26, 37, 38, 43, 44], 
  [12, 13, 23, 26, 33, 34, 37, 38, 43, 44], 
  [12, 13, 23, 26, 33, 34, 37, 38, 43, 44] 
]; 
 
var res = Array.from(new Set(arr.flat())); 
 
console.log(res.join(" "));

Answer 2

Если хочется сделать самостоятельно в синтаксисе ES5 (обращаю внимание, что для проверки наличия элемента он приводится к строке, что означает неприменимость этого кода к объектам и необходимость внимательно отнестись к наличию смешанных типов в массиве , в том числе null и undefined):

var arr = [ 
  [23, 26, 37, 38, 43, 44], 
  [12, 13, 23, 26, 33, 34, 37, 38, 43, 44], 
  [12, 13, 23, 26, 33, 34, 37, 38, 43, 44] 
]; 
 
var res = [], has = Object.create(null); 
 
for (var q=0; q<arr.length; ++q) { 
  for (var w=0; w<arr[q].length; ++w) { 
    if (!has[arr[q][w]]) { 
      has[arr[q][w]] = true; 
      res.push(arr[q][w]); 
    } 
  } 
} 
 
console.log(res.join(" "));

READ ALSO
Фильтр блоков по значениям нескольких выпадающих списков

Фильтр блоков по значениям нескольких выпадающих списков

Есть выпадающие списки, которые определяют параметры фильтрации:

110
Javascript Modal gallery всплывает ненужное окно

Javascript Modal gallery всплывает ненужное окно

Возникла проблема просмотром "картинок" в модальном окнеПри нажати на кнопки next or prev сплывает ненужный блок

114