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

Как можно избавиться от дубликатов в массиве `result` так, чтобы были сохранены только первые вхождения элементов, расположенных ближе к началу массива? В коде приведен цикл, который пытается выполнить это условие, но возможно существуют способы сделать это более эффективно с использованием методов `Set` или `filter`?
  • 26 мая 2024 г. 22:31
Ответы на вопрос 2
Для удаления повторяющихся элементов, начиная с последнего элемента массива, можно применить следующий подход:

1. Проходим по массиву с конца (от последнего элемента к первому).
2. Для каждого элемента проверяем, есть ли его индекс в массиве до текущего элемента. Если есть, то удаляем текущий элемент.

Пример кода:

```javascript
let arr = [1, 2, 3, 2, 1, 4, 5, 4];

for (let i = arr.length - 1; i >= 0; i--) {
  if (arr.indexOf(arr[i]) < i) {
    arr.splice(i, 1);
  }
}

console.log(arr); // [1, 2, 3, 4, 5]
```

Чтобы избавиться от дубликатов в массиве `result` так, чтобы были сохранены только первые вхождения элементов, расположенных ближе к началу массива, можно воспользоваться конструкцией Set и метода filter:

```javascript
let result = [1, 2, 3, 2, 4, 3, 5];

result = result.filter((item, index) => result.indexOf(item) === index);

console.log(result); // [1, 2, 3, 4, 5]
```

Этот код создаст новый массив, в котором будут только уникальные элементы из исходного массива `result`, сохраненные в порядке их первого вхождения.
Не знаю насколько хорошее решение, дайте знать: 
result.map((el, i, arr) => {
    const dublicateIndex = arr.filter((del, di) => di !== i).findIndex(del => del[0] === el[0]);
    if(dublicateIndex > -1) arr.splice(i, 1);
    return el;
});
Похожие вопросы