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

Nhóm đối tượng dựa trên giá trị trong JavaScript


Dưới đây là mã để nhóm (group) các đối tượng dựa trên một giá trị thuộc tính trong JavaScript.

Ví dụ

<!DOCTYPE html> <html lang="vi"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Group objects</title> <style> body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; } .result { font-size: 18px; font-weight: 500; color: rebeccapurple; } </style> </head> <body> <h1>Nhóm đối tượng dựa trên giá trị trong JavaScript</h1> <div class="result"> { name: 'Rohan', age: 18 }, { name: 'Mohan', age: 20 }, { name: 'Shawn', age: 18 }, { name: 'Michael', age: 18 }, { name: 'David', age: 20 } </div> <button class="Btn">NHẤN VÀO ĐÂY</button> <h3>Nhấn nút để nhóm các đối tượng trên theo tuổi</h3> <script> let resEle = document.querySelector(".result"); let BtnEle = document.querySelector(".Btn"); const people = [ { name: "Rohan", age: 18 }, { name: "Mohan", age: 20 }, { name: "Shawn", age: 18 }, { name: "Michael", age: 18 }, { name: "David", age: 20 }, ]; let groupBy = (array, key) => { return array.reduce((result, obj) => { (result[obj[key]] = result[obj[key]] || []).push(obj); return result; }, {}); }; let a = groupBy(people, "age"); BtnEle.addEventListener("click", () => { console.log(a); }); </script> </body> </html>

Kết quả

Mở console (F12) để xem kết quả:

{ 18: [ {name: "Rohan", age: 18}, {name: "Shawn", age: 18}, {name: "Michael", age: 18} ], 20: [ {name: "Mohan", age: 20}, {name: "David", age: 20} ] }

Hàm groupBy dùng reduce để gom nhóm: tạo object với key là giá trị thuộc tính nhóm, value là mảng các đối tượng có key đó. Đây là pattern phổ biến cho data processing.