Nhảy tới nội dung

Những hàm JavaScript hữu ích

· 2 phút để đọc
Nguyễn Huỳnh Minh Tiến

Ngày nay, JavaScript là một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới. Nó được sử dụng bởi nhiều công ty như Google, Facebook, Microsoft, v.v. để xây dựng các ứng dụng web. JavaScript là một ngôn ngữ rất mạnh mẽ có thể được sử dụng để xây dựng các ứng dụng web phức tạp. Nó cũng là một ngôn ngữ rất linh hoạt có thể được sử dụng để xây dựng các ứng dụng web đơn giản.

Trong bài viết này, tôi sẽ liệt kê một số hàm tiện ích JavaScript hữu ích nhất mà tôi đã sử dụng trong các dự án của mình.

JavaScript

1. GetValuesByKey

Hàm này sẽ giúp bạn lấy các giá trị có cùng tên field trong một object, bao gồm các object con lồng nhau. Nó sẽ trả về một mảng các giá trị tìm được.

GetValuesByKey.js
/**
* Get all values of specific key in object
* @param {object} obj A javascript object to get values
* @param {string} key A key of object
* @returns
*/
function GetValuesByKey(obj, key) {
let values = [];
for (let i in obj) {
if (!obj.hasOwnProperty(i)) continue;
if (typeof obj[i] == 'object') {
values = values.concat(GetValuesByKey(obj[i], key));
} else if (i == key) {
values.push(obj[i]);
}
}
return values;
}

2. Flatten object

2.1. Flatten object

Hàm này sẽ giúp bạn làm phẳng một object có các object con lồng nhau. Nó sẽ trả về một object mới với các keykey của các object con lồng nhau.

FlattenObject.js
/**
* Flattens an object to a single level object
* @param {object} obj Object to flatten
* @returns An object with all keys and values flattened
*/
function FlattenObject(obj) {
const flattened = {};

Object.keys(obj).forEach((key) => {
if (typeof obj[key] === 'object' && obj[key] !== null) {
Object.assign(flattened, flattenObject(obj[key]));
} else {
flattened[key] = obj[key];
}
});

return flattened;
}

2.2. Flatten object with key

Hàm này sẽ giúp bạn làm phẳng một object có các object con lồng nhau. Nó sẽ trả về một object mới với các keykey của các object con lồng nhau, nhưng có thêm key của object cha ở đầu key của object con.

FlattenObjectWithKey.js
/**
* Flattens a javascript object with the keys as the path
* @param {object} obj A javascript object to flatten
* @param {string} prefix A prefix to add to keys
* @returns An object with all keys and values flattened
*/
function FlattenObjectWithKey(obj, prefix = '') {
return Object.keys(obj).reduce((acc, k) => {
const pre = prefix.length ? `${prefix}.` : '';
if (typeof obj[k] === 'object' && obj[k] !== null && !Array.isArray(obj[k])) {
Object.assign(acc, FlattenObjectWithKey(obj[k], pre + k));
} else {
acc[pre + k] = obj[k];
}
return acc;
}, {});
}

Share this page