Как удалить дубликаты чисел из массива?

В JavaScript

Использование Set (самый простой способ):

const array = [1, 2, 3, 3, 4, 4, 5];
const uniqueArray = [...new Set(array)];
// Результат: [1, 2, 3, 4, 5]

Использование filter() и indexOf():

const array = [1, 2, 3, 3, 4, 4, 5];
const uniqueArray = array.filter((item, index) => array.indexOf(item) === index);
// Результат: [1, 2, 3, 4, 5]

Использование reduce():

const array = [1, 2, 3, 3, 4, 4, 5];
const uniqueArray = array.reduce((unique, item) => 
  unique.includes(item) ? unique : [...unique, item], 
[]);
// Результат: [1, 2, 3, 4, 5]

Метод с использованием Set является наиболее эффективным и коротким решением, так как Set по определению может содержать только уникальные значения.

В PHP

Использование array_unique() (самый простой способ):

$array = [1, 2, 3, 3, 4, 4, 5];
$uniqueArray = array_unique($array);
// Результат: [1, 2, 3, 4, 5]

Использование array_keys() и array_flip():

$array = [1, 2, 3, 3, 4, 4, 5];
$uniqueArray = array_keys(array_flip($array));
// Результат: [1, 2, 3, 4, 5]

Использование цикла foreach с проверкой:

$array = [1, 2, 3, 3, 4, 4, 5];
$uniqueArray = [];
foreach($array as $value) {
    if (!in_array($value, $uniqueArray)) {
        $uniqueArray[] = $value;
    }
}
// Результат: [1, 2, 3, 4, 5]

Рекомендации по выбору метода:

  • array_unique() — самый простой и читаемый способ, подходит для большинства случаев
  • array_flip() + array_keys() — может быть более эффективным для больших массивов
  • Цикл foreach — полезен, когда вам нужна дополнительная логика при удалении дубликатов

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

$uniqueArray = array_unique($array, SORT_REGULAR);

После удаления дубликатов может быть полезно «перезагрузить» индексы массива с помощью array_values():

$array = [1, 2, 3, 3, 4, 4, 5];
$uniqueArray = array_values(array_unique($array));
// Результат: [1, 2, 3, 4, 5] с последовательными индексами

Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *