Today, JavaScript is one of the most popular programming languages in the world. It is used by many companies like Google, Facebook, Microsoft, etc. to build web applications. JavaScript is a very powerful language that can be used to build complex web applications. It is also a very flexible language that can be used to build simple web applications.
In this article, I will list some of the most useful JavaScript utility functions that I have used in my projects.
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;
}, {});
}