Дискуссионный математический форумМатематический форум

Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 4 часа [ Летнее время ]
MathHelpPlanet.com RSS-лента Математического форума

Часовой пояс: UTC + 4 часа [ Летнее время ]


JavaScript: уникальные элементы массива

JavaScript: уникальные элементы массива


Проверка уникальности элементов массива на JavaScript


Функция [math]\operatorname{testUnique}(A)[/math] проверяет массив [math]A[/math] на уникальность его элементов. Если все элементы массива уникальны (не имею дублей), то функция вернёт [math]\text{true}[/math], в противном случае — [math]\text{false}[/math]. Время работы в худшем случае [math]O(n^2)[/math].


function testUnique(A)
{
var n = A.length;
for (var i = 0; i < n-1; i++)
{ for (var j = i+1; j < n; j++)
{ if (A[i] === A[j]) return false; }
}
return true;
}

Если массив [math]A[/math] упорядочен, то не сложно составить более эффективный алгоритм проверки уникальности элементов, время работы которого в худшем случае [math]O(n)[/math].


function testUniqueSort(A)
{
var n = A.length;
for (var i = 1; i < n; i++)
{ if (A[i-1] === A[ i ]) return false; }
return true;
}



Удаление повторяющихся элементов в массиве на JavaScript


Функция Unique(A), которая возвращает массив, содержащий только уникальные элементы A. Элементами массива A могут быть как числа, так и строки.


function Unique(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;
}

Если массив упорядочен, то эффективней этот алгоритм (время [math]O(n)[/math]):


function UniqueSort(A)   // A - упорядоченный массив.
{
var n = A.length, B = [A[0]];
for (var i = 1, j = 1; i < n; i++)
{ if (A[ i ] !== B[j-1]) B[j++] = A[ i ]; }
return B;
}



Получение уникальных элементов массива на JavaScript


Функция возвращает только уникальные элементы упорядоченного массива, то есть на выходе будет массив только с теми элементами входного упорядоченного массива, которые не имеют дубли.


function getUniqueElems(A)   // A - упорядоченный массив.
{
var n = A.length, B = [];
for (var i = 1, j = 0, t; i < n+1; i++)
{ if (A[i-1] === A[ i ]) t = A[i-1];
if (A[i-1] !== t) B[j++] = A[i-1];
}
// На выходе массив только с теми элементами входного
return B; // упорядоченного массива, которые не имеют дубли.
}



Получение элементов массива, имеющих дубли, на JavaScript


Функция для получения элементов упорядоченного массива, имеющих дубли, то есть на выходе будет массив только с теми элементами входного, упорядоченного массива, которые имеют дубли


function getDublsSortArr(A)   // A - упорядоченный массив.
{
var n = A.length, B = [];

for (var i = 1, j = 0; i < n; i++)
{ if (A[i-1] === A[ i ]) B[j++] = A[i-1]; }

return UniqueSort(B); // Функцию UniqueSort см. выше.
}

Часовой пояс: UTC + 4 часа [ Летнее время ]


Яндекс.Метрика

Copyright © 2010-2016 MathHelpPlanet.com. All rights reserved