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.
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.
- Source code 📃
- Chạy thử 🧑💻
/**
* 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 key
là key
của các object
con lồng nhau.
- Source code 📃
- Chạy thử 🧑💻
/**
* 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 key
là key
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.
- Source code 📃
- Chạy thử 🧑💻
/**
* 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;
}, {});
}