Оглавление скрыть


Вы можете авторизоваться через ВКонтакте, Фейсбук и оставить комментарий


Массив уникальных значений (JavaScript)

Чтобы в ДжаваСкрипте получить массив состоящий из уникальных значений, то самый простой вариант — отсортировать массив и обратным перебором проверять текущий и предшествующий значения, и, если они равны, удалить текущий.

Пример

Например у нас есть числовой массив, задача удалить повторяющиеся значения.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// исходный массив
var arr = [123456135724689101113151047942];

console.log(arr);
// [1, 2, 3, 4, 5, 6, 1, 3, 5, 7, 2, 4, 6, 8, 9, 10, 11, 13, 15, 10, 4, 7, 9, 4, 2]

var i = arr.length;
arr.sort();

while (i--) {
    if (arr[i] == arr[i-1]) {
        arr.splice(i, 1);
    }
}

console.log(arr);
// [1, 10, 11, 13, 15, 2, 3, 4, 5, 6, 7, 8, 9]
Опубликовано: 21 ноября 2013  ·  Автор: Артём Фёдоров  ·  5787 просмотров

Категория

ГлавнаяПрограммированиеJavaScriptМассивыМассив уникальных значений (JavaScript)

Чтобы оставить комментарий нужно авторизоваться на сайте
или войти через ВКонтакте или Фейсбук

Войти через ФейсбукВойти через Твиттер

Комментарии

Предлагаю написать статью на эту тему, читателям будет интересно.
Артём Фёдоров · 3 года назад
Методы .sort и .splice как бы тоже используют циклы. Вообще,.splice медленный; после сортировки лучше сдвинуть уникальные элементы в начало массива и обрезать его
arr.sort();
for (var i = 1, j = 1, n = arr.length; i < n; i++)
{ if (arr[i] !== arr[j-1]) arr[j++] = arr[i]; }
arr.length = j;
Юра Романов · 3 года назад
Порядок нарушается, да. Зато одним циклом.
Артём Фёдоров · 3 года назад
Не совсем корректное решение: не сохраняется порядок следования элементов. Лучше так
function getUnique(A)
{
var n = A.length, k = 0, B = [];

for (var i = 0; i < n; i++)
{ var j = 0;
while (j < k && B[j] !== A[i]) j++;
if (j == k) B[k++] = A[i];
}

return B;
}
Юра Романов · 3 года назад
Массивы, JavaScript, Программирование

© 2010-2017 expange.ru
При полном или частичном копировании статей сайта, ссылка на источник обязательна.

Хотите узнать больше информации, пишите на: artem@expange.ru

Полезное онлайн  ·  Новости  ·  Изображения  ·  Статьи по датам

О проекте  ·  Правила пользования  ·  Представительства

Благодарности и пожелания