Найти лишний элемент в массиве

333
13 июля 2017, 02:48

Есть массив строк. Все строки одинаковые, кроме одной.

Как ее найти и вернуть?

Пример function(['privet', 'privet', 'privet', 'poka']) === poka;

Answer 1

Так как вариантов значений всего два можно пойти следующим путем:

  1. взять первые два элемента,
  2. если они равны, то простым пробегом по массиву найти элемент, который не будет равен уже найденным.
  3. в противном случае, нужно найти первый элемент, который не будет равен одному из указанных.

Реализовать можно следующим образом:

var array = ['privet', 'privet', 'privet', 'poka']; 
 
function findUniq(arr) { 
  var prev = arr[0]; 
  var prev2 = arr[1]; 
  if (prev == prev2) { 
    for (var i = 2; i < arr.length; i++) { 
      if (prev != arr[i]) return arr[i]; 
    } 
  } 
 
  if (prev != arr[2]) return prev; 
 
  if (prev2 != arr[2]) return prev2; 
} 
 
 
console.log(findUniq(array));

Answer 2

Вначале подсчитываем сколько раз в массиве встречается элемент. А потом другим циклом выводим тот элемент, у которого количество равно 1.

var array = ['privet', 'privet', 'privet', 'poka']; 
 
function getSingleElement(array) { 
  var counts = {}; 
 
  array.forEach(function(element) { 
    if (!counts[element]) { 
      counts[element] = 0; 
    } 
 
    counts[element] += 1; 
  }); 
 
  for (var item in counts) { 
    if (counts[item] == 1) { 
      return item; 
    } 
  } 
} 
 
console.log(getSingleElement(array));

READ ALSO
Странное поведение document.documentElement.clientHeight в Mozilla

Странное поведение document.documentElement.clientHeight в Mozilla

ЗдравствуйтеУ меня на сайте высота блока задается в соотношении по размеру высоты пользователя, ещё некоторые координаты но это не особо...

263
Cross-domain запросы API

Cross-domain запросы API

Сделал приложение для получения погоды рядом с пользователемПосле открытия не локально, выдает ошибку по поводу cross-domain запросы и говорит,...

310
Laravel mix 5.4 This dependency was not found:

Laravel mix 5.4 This dependency was not found:

После сборки вылазит ошибка

212