const array = [1, 2, 4, 1, 4, 6, 2, 5];
function method1(coll) {
// так работает Set
// https://learn.javascript.ru/map-set#set
return [...new Set(coll)];
}
function method2(coll) {
return coll.filter((currentItem, index) => {
// indexOf находит первый попавшийся элемент и возвращает его индекс
// когда цикл дойдет до 4-го элемента (единицы), то index будет равен 3-м, а indexOf найден единицу на 0-м элементе
// результат сравнения будет false и элемент в результат не войдет
return index === coll.indexOf(currentItem);
});
}
function method3(coll) {
// из массива создадим объект, т.к. в объекте не может быть двух одинаковых ключей
const mapping = coll.reduce((accumulator, currentItem) => {
// даже если значение уже есть - оно перезапишется
accumulator[currentItem] = currentItem;
return accumulator;
}, {});
// из полученного объекта создаем массив значений
return Object.values(mapping);
}
console.log(method1(array)); // [1, 2, 4, 6, 5]
console.log(method2(array)); // [1, 2, 4, 6, 5]
console.log(method3(array)); // [1, 2, 4, 6, 5]