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

Nhóm đối tượng theo thuộc tính trong JavaScript


Giả sử chúng ta có mảng đối tượng chứa dữ liệu về trái cây và rau như sau:

const arr = [ 
    {food: 'apple', type: 'fruit'}, 
    {food: 'potato', type: 'vegetable'}, 
    {food: 'banana', type: 'fruit'}, 
];

Cần viết hàm nhận mảng như vậy. Hàm sẽ nhóm các đối tượng dựa trên thuộc tính "type".

Điều đó có nghĩa là tất cả đối tượng loại "fruit" được gom lại, và "vegetable" được gom riêng.

Ví dụ

Mã thực hiện như sau:

const arr = [ 
    {food: 'apple', type: 'fruit'}, 
    {food: 'potato', type: 'vegetable'}, 
    {food: 'banana', type: 'fruit'}, 
]; 
const transformArray = (arr = []) => { 
    const res = []; 
    const map = {}; 
    let i, j, curr; 
    for (i = 0, j = arr.length; i < j; i++) { 
        curr = arr[i]; 
        if (!(curr.type in map)) { 
            map[curr.type] = {type: curr.type, foods: []}; 
            res.push(map[curr.type]); 
        }; 
        map[curr.type].foods.push(curr.food); 
    }; 
    return res; 
}; 
console.log(transformArray(arr));

Kết quả

Kết quả trong console sẽ là:

[ 
    { type: 'fruit', foods: [ 'apple', 'banana' ] }, 
    { type: 'vegetable', foods: [ 'potato' ] } 
]