Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Xóa phần tử trùng lặp trong mảng bằng cách so sánh chỉ mục 0 với JavaScript

Giả sử chúng ta có mảng sau chứa các cặp [tên môn học, điểm số]:

var subjectNameAlongWithMarks = [
    ["JavaScript", 78],
    ["Java", 56],
    ["JavaScript", 58],
    ["MySQL", 77],
    ["MongoDB", 75],
    ["Java", 98]
];

Mảng có các giá trị trùng lặp tại chỉ mục 0 (tên môn học). Để loại bỏ các phần tử trùng dựa trên chỉ mục này, ta sử dụng Set kết hợp với filter:

Ví dụ

var subjectNameAlongWithMarks = [
    ["JavaScript", 78],
    ["Java", 56],
    ["JavaScript", 58],
    ["MySQL", 77],
    ["MongoDB", 75],
    ["Java", 98]
];

var distinctResult = subjectNameAlongWithMarks.filter(function ([value]) {
    return !this.has(value) && !!this.add(value);
}, new Set());

console.log(distinctResult);

Cách chạy

Lưu code vào file (ví dụ demo196.js) và chạy lệnh:

node demo196.js

Kết quả

[
    [ 'JavaScript', 78 ],
    [ 'Java', 56 ],
    [ 'MySQL', 77 ],
    [ 'MongoDB', 75 ]
]

Giải thích: Hàm filter duyệt qua từng phần tử, destructuring lấy value (phần tử ở chỉ mục 0). Set lưu trữ các giá trị đã gặp. Nếu value chưa có trong Set (!this.has(value)), thêm vào Set (this.add(value)) và giữ lại phần tử đó. Kết quả chỉ giữ lại lần xuất hiện đầu tiên của mỗi môn học.