Bài viết


Tổng hợp các hàm hay và thường dùng với array và object trong lodash

Ngày đăng: 06/08/2024

Lodash là một thư viện JavaScript phổ biến cung cấp nhiều hàm tiện ích để làm việc với mảng, đối tượng,... Nó giúp lập trình viên viết mã ngắn gọn, dễ đọc và bảo trì hơn.


Sau đây là các hàm thường dùng với mảng và đối tượng


1. _.omitBy()

Dùng để loại bỏ các cặp key-value theo điều kiện trả về


let newObj = _.omitBy(obj, v => v === '');


Kết quả: Trả về object mới không có thuộc tính nào có giá trị là string rỗng.


Ví dụ:

let obj = {
key1: 12,
key2: "",
key3: 'name'
}

let newObj = _.omitBy(obj, v => v === '');

console.log(newObj);

// Kết quả in ra:
{
key1: 12,
key3: 'name'
}


2. _.differenceBy()

Loại bỏ các object của mảng ban đầu có thuộc tính bằng với thuộc tính của object trong mảng được truyền vào


 const newArray =. _.differenceBy(array_1, array_2, 'id');


Trong đó:

  • array_1: mảng ban đầu cần filter
  • array_2: mảng truyền vào để so sánh
  • id: thuộc tính cần so sánh giữa 2 mảng

Ví dụ:

const arr1 = [{ id: 1, name: 'A' }, { id: 2, name: 'B' }];
const arr2 = [{ id: 1, name: 'C' }];


const newArr = _.differenceBy(arr1, arr2, 'id')
console.log(newArr);

// Kết quả: [{id: 2, name: 'B'}]


3. _.groupBy()

Nhóm các object trong mảng dựa theo thuộc tính nào đó


let groupByName = _.groupBy(arrObj, ({ name }) => name);


Trong đó:

  • arrObj : mảng ban đầu
  • Gom nhóm các object có thuộc tính name giống nhau

Ví dụ:

let arrObj = [
{
name: "bqsoft",
address: "Đà nẵng",
},
{
name: "dicol",
address: "Quảng nam",
},
{
name: "bqsoft",
address: "Huế",
}
]

let groupByName = _.groupBy(arrObj, ({ name }) => name);

console.log(groupByName);

// Kết quả:
{
    "bqsoft": [
        {
            "name": "bqsoft",
            "address": "Đà nẵng"
        },
        {
            "name": "bqsoft",
            "address": "Huế"
        }
    ],
    "dicol": [
        {
            "name": "dicol",
            "address": "Quảng nam"
        }
    ]
}


4. _.merge kết hợp _.keyBy

Merge 2 mảng với nhau dựa trên key.


let merged = _.merge(_.keyBy(users, 'id'), _.keyBy(onlineUsers, 'userId'));
let allUser = _.values(merged);


Trong đó:

  • users: mảng thứ 1 sử dụng key là id để so sánh
  • onlineUsers: mảng thứ 2 sử dụng key là userId để so sánh với mảng 1

Ví dụ:

const users = [
{
id: '1',
age: 20,
},
{
id: '2',
age: 19,
},
{
id: '3',
age: 25
}
]


const onlineUsers = [
{
userId: '1',
status: true
},
{
userId: '3',
status: false,
},
]
let merged = _.merge(_.keyBy(users, 'id'), _.keyBy(onlineUsers, 'userId'));
let allUser = _.values(merged);
console.log(allUser, 'allUser')

// Kết quả:

[
    {
        "id": "1",
        "age": 20,
        "userId": "1",
        "status": true
    },
    {
        "id": "2",
        "age": 19
    },
    {
        "id": "3",
        "age": 25,
        "userId": "3",
        "status": false
    }
]


5. _.orderBy()

Sắp xếp mảng các object dựa trên một hoặc nhiều thuộc tính của object theo thứ tự nào đó


_.orderBy(arr, ['thuộc_tính_1'],['desc'])


Trong đó:

  • arr: mảng cần sắp xếp
  • thuộc_tính_1: mảng được sắp xếp theo thuộc_tính_1
  • desc: Sắp xếp giảm dần, nếu là asc thì tăng dần

Ví dụ:

const arr = [
{
name: "Bqsoft",
staff: 20
},
{
name: "Dicol",
staff: 12
},
{
name: "Rionlab",
staff: 40
}
]


const newArr = _.orderBy(arr, ['staff'],['desc'])
console.log(newArr);

// Kết quả:

[
    {
        "name": "Rionlab",
        "staff": 40
    },
    {
        "name": "Bqsoft",
        "staff": 20
    },
    {
        "name": "Dicol",
        "staff": 12
    }
]
Liên hệ ngay tại đây với chúng tôi để được tư vấn nhanh nhất hoặc liên hệ:

Hotline: 0705.550.553

Email: bqsoftvn@gmail.com

Fanpage: https://www.facebook.com/bqsoftvn


Hân hạnh được hợp tác!

icon zalo
icon-mess