Возврат уникальных значений из списка на JavaScript

5 апреля, 2017
1 минута чтения

Сниппет

const onlyUnique = function(values = []) {
  let outArray = [];

  Array.from(values).forEach((value, i, arr) => {
    if (typeof value === 'object') {
      if (outArray.length) return;
      outArray = getOnlyUniqueObject(arr);
    } else {
      if (outArray.find(val => val === value)) return;
      outArray.push(value);
    }
  });
  
  return outArray;
}
/**
  * @param values {Array}
  * @return {Array}
  */
function getOnlyUniqueObject(values) {
  const tempValues = [];
  values.forEach(value => {
    if (tempValues.includes(value)) return;
    const valExists = tempValues.find(val => JSON.stringify(val) === JSON.stringify(value));
    if (valExists) return;
    tempValues.push(value);
  });
  
  return tempValues;
}

Демонстрация

onlyUnique([{x: 1}, {x: 1}, {x: 2}]) // => [{x:1}, {x:2}]

onlyUnique([1,2,2,1]) // => [1,2]

Денис Сергеевич Басковский

Философ, изобретатель и поэт.

Добавить комментарий Отменить ответ

extension page
Предыдущая статья

Пишем свой Chrome Extenstion

multiple markers
Следующая статья

Генератор фейковых точек на карте

Exit mobile version