Computer >> Máy Tính >  >> Lập trình >> Javascript

Loại bỏ hoàn toàn các mục trùng lặp khỏi một mảng trong JavaScript

Chúng tôi bắt buộc phải viết một hàm nhận vào một mảng và trả về một mảng mới có các giá trị trùng lặp đã bị xóa khỏi nó.

Các giá trị xuất hiện nhiều lần trong mảng ban đầu thậm chí không được xuất hiện một lần trong mảng mới.

Ví dụ:nếu đầu vào là -

const arr = [23,545,43,232,32,43,23,43];

Đầu ra phải là -

const output = [545, 232, 32];

Hiểu sự khác biệt -

  • Array.prototype.indexOf () → Nó trả về chỉ số của lần xuất hiện đầu tiên của chuỗi được tìm kiếm nếu itexists, nếu không thì -1.

  • Array.prototype.lastIndexOf () → Nó trả về chỉ mục của lần xuất hiện cuối cùng của chuỗi được tìm kiếm nếu nó tồn tại, nếu không thì -1.

Cả hai phương pháp đều bắt đầu từ trái sang phải.

Cả hai phương pháp đều bắt đầu từ 0 nếu đối số thứ hai là không xác định, phương pháp khác bắt đầu từ đối số thứ hai nếu đó là một số.

Vì vậy, điểm quan trọng ở đây là, nếu trong một mảng, phương thức indexOf () và lastIndexOf () trỏ đến chỉ mục cùng tên, chúng tôi có thể chắc chắn rằng nó chỉ tồn tại một lần, vì vậy chúng tôi sẽ sử dụng phát hiện này trong mã của mình.

Mã đầy đủ cho hàm sẽ là -

Ví dụ

const arr = [23,545,43,232,32,43,23,43];
const deleteDuplicate = (arr) => {
   const output = arr.filter((item, index, array) => {
      return array.indexOf(item) === array.lastIndexOf(item);
   })
   return output;
};
console.log(deleteDuplicate(arr));

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

[ 545, 232, 32 ]