Phương thức Map.groupBy() trong JavaScript
Bùi Tấn Lực
- 930
- 19/09/2025
Chức năng của Phương thức Map.groupBy() trong JavaScript
Phương thức Map.groupBy() trong JavaScript dùng để nhóm các phần tử trong một mảng vào các đối tượng Map khác nhau, các phần tử thỏa điều kiện vào một Map, các phần tử không thỏa điều kiện vô một Map.
Cú pháp của Phương thức Map.groupBy() trong JavaScript
Map.groupBy(mang, hamdieukien);
mang: Mảng chứa các cột khóa và giá trị.
hamdieukien: Hàm điều kiện để chia ra 2 nhóm, nhóm thỏa điều kiện và nhóm không thỏa điều kiện.
Code Phương thức Map.groupBy() trong JavaScript
<script>
// Tạo một mảng
const thanhViens = [
{hoten:"Bùi Tấn Lực", tuoi:35},
{hoten:"Trần Thị Vân", tuoi:29},
{hoten:"Bùi Đan Trúc Quỳnh", tuoi:1},
{hoten:"Nguyễn Thùy Dung", tuoi:30},
{hoten:"Nguyễn Thảo Nhật Hạ", tuoi:2}
];
// Tạo hàm để tạo 2 nhóm điều kiện
function duMuoiTamTuoi({ tuoi }) {
return tuoi > 17 ? "du18" : "chuadu18";
}
// Group by để chia ra 2 Map, Map đủ 18 và Map chưa đủ 18
const result = Map.groupBy(thanhViens, duMuoiTamTuoi);
// Map đủ 18 tuổi
document.write("<b>// Map đủ 18 tuổi</b><br>");
for (let x of result.get("du18")) {
document.write( x.hoten + " " + x.tuoi + "<br>");
}
// Map chưa đủ 18 tuổi
document.write("<b>// Map chưa đủ 18 tuổi</b><br>");
for (let x of result.get("chuadu18")) {
document.write( x.hoten + " " + x.tuoi + "<br>");
}
</script>
Kết quả:
// Map đủ 18 tuổi
Bùi Tấn Lực 35
Trần Thị Vân 29
Nguyễn Thùy Dung 30
// Map chưa đủ 18 tuổi
Bùi Đan Trúc Quỳnh 1
Nguyễn Thảo Nhật Hạ 2
Map.groupBy() trong JavaScript trả về kết quả gì?
Sau khi gọi Map.groupBy(), kết quả nhận được là một đối tượng Map. Mỗi khóa trong Map đại diện cho một nhóm, còn giá trị tương ứng là một mảng chứa các phần tử được xếp vào nhóm đó.
Cách tổ chức này giúp bạn dễ dàng lấy riêng từng nhóm, kiểm tra dữ liệu hoặc tiếp tục xử lý các phần tử sau khi phân loại.
Cấu trúc kết quả của Map.groupBy()
Có thể hình dung kết quả theo cấu trúc Map gồm nhiều cặp khóa - giá trị. Khóa được tạo từ giá trị mà hàm callback trả về, còn giá trị là danh sách các phần tử thuộc khóa đó.
const products = [
{ name: "Áo", type: "fashion" },
{ name: "Quần", type: "fashion" },
{ name: "Bàn", type: "furniture" }
];
const groups = Map.groupBy(products, product => product.type);
console.log(groups);
Trong ví dụ trên, groups là một Map có hai nhóm là fashion và furniture. Nhóm fashion chứa hai sản phẩm, trong khi furniture chỉ có một sản phẩm.
Cách lấy dữ liệu từ từng nhóm
Vì kết quả là Map, bạn có thể sử dụng get() để lấy mảng dữ liệu tương ứng với một khóa cụ thể.
const fashionProducts = groups.get("fashion");
console.log(fashionProducts);
Nếu khóa tồn tại, get() trả về mảng các phần tử thuộc nhóm đó. Từ mảng này, bạn có thể tiếp tục sử dụng các phương thức như map(), filter() hoặc forEach() để xử lý dữ liệu.
Kiểm tra nhóm không tồn tại
Khi yêu cầu một khóa chưa xuất hiện trong kết quả, get() sẽ trả về undefined. Vì vậy, nên kiểm tra trước khi thao tác với dữ liệu nếu khóa có thể không tồn tại.
const electronics = groups.get("electronics");
if (electronics) {
console.log(electronics);
} else {
console.log("Không tìm thấy nhóm");
}
Nếu cần xác định một nhóm có tồn tại hay không mà không lấy dữ liệu, có thể dùng has(). Cách này đặc biệt hữu ích khi xử lý dữ liệu động và tránh gọi các phương thức của mảng trên giá trị undefined.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Phương thức Map.groupBy() trong JavaScript.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *