Страницы

Поиск по вопросам

пятница, 29 марта 2019 г.

Не добавляются уникальные элементы в массив

Пишу свой велосипед по удалению одинаковых элементов массива. Как бы при выводе в консоль дубли не попадаются т.е выводится всё как нужно (1, 11, 2, 4, 5, 3). Но при этом в результирующий массив res ничего не попадает. Помогите исправить
var res = []; var a = [1, 1, 11, 2, 4, 2, 5, 3, 1]; var N = a.length; for (i = 0; i < N; i++) { f = 1; for (j = 0; j < N; j++) if (a[i] == a[j] && i != j) { f = 0; break; } if (f == 1){ console.log(a[i]); //в консоле(1,11,2,4,5,3) res.push(a[i]) // в итоговом массиве 1,1,11,2,4,2,5,3,1 -----что не верно } } }


Ответ

Честно говоря не хочу смотреть ваш велосипед. Да он и в консоль выводит дубли. Не знаю как вы проверяли.
Но, кмк, проще сделать так:
var arr = [1, 1, 11, 2, 4, 2, 5, 3, 1]; var set = new Set(arr); arr = Array.from(set); console.log(arr);
Объекты Set позволяют сохранять уникальные значения любого типа, как примитивы, так и другие типы объектов. (вроде браузеры поддерживают)
Array.from() создаёт новый экземпляр Array из массивоподобного или итерируемого объекта.

Комментариев нет:

Отправить комментарий