В 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] с последовательными индексами
Добавить комментарий