Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получить массив без повторяющихся элементов (https://javascript.ru/forum/misc/43628-poluchit-massiv-bez-povtoryayushhikhsya-ehlementov.html)

truten 14.12.2013 17:44

Получить массив без повторяющихся элементов
 
Помогите доделать лаб.работу, написать функцию, возвращающую массив без повторяющихся элементов, при этом чтобы не изменялся порядок следования элементов.
Например для [1,7,2,1,5,8,2,3,4,5,9,5,7] функция должна вернуть [1,7,2,5,8,3,4,9].

Faab 14.12.2013 18:12

вот здесь автор предлагает два разных решений http://learn.javascript.ru/array-methods

Demath 14.12.2013 19:34

Или так (порядок сохраняется)

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;
}

alert( Unique([1,7,2,1,5,8,2,3,4,5,9,5,7]) );

Maxmaxmaximus5 15.12.2013 11:54

Дзен-трансгуманист,
function uniqueMap ( array ) {
 
  return array.filter( function ( value ) {
    return !this.has( value ) && !this.set( value, true );
  },
  new Map());
}


охренеть что это

SV0L0CH 15.12.2013 12:34

Если в Map использовать логические значения, то лучше уж брать Set.
Хотел показать свой вариант, но он на кофескрипте.

kobezzza 15.12.2013 20:35

Цитата:

Сообщение от Maxmaxmaximus5 (Сообщение 286675)
Дзен-трансгуманист,
function uniqueMap ( array ) {
 
  return array.filter( function ( value ) {
    return !this.has( value ) && !this.set( value, true );
  },
  new Map());
}


охренеть что это

Очнулся, в ECMA6 ввели новые типы данных: WeakMap, Map и Set, а теперь быстро гуглить по теме и не задавать больше таких вопросов)


Часовой пояс GMT +3, время: 09:30.