Skip to main content

Helpful JavaScript utility functions

· 2 min read
Full name

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.

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