Created
January 24, 2020 14:30
-
-
Save fczbkk/52a306640954f12d30ec115760bfa88e to your computer and use it in GitHub Desktop.
Function to serialize object into a string (e.g. URL parameters).
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @typedef {Object} SerializeOptions | |
* @param {String} [pairDelimiter = '='] Delimiter to be used between each key and value. | |
* @param {String} [itemDelimiter = '&'] Delimiter to be used between each pair. | |
*/ | |
/** | |
* Converts data object to a string, using delimiters. Primarily used to generate URL parameters. | |
* @param {Object} [data = {}] | |
* @param {SerializeOptions} [options] | |
* @returns {string} | |
* | |
* @example | |
* // returns "aaa=bbb&ccc=ddd" | |
* serialize({aaa: 'bbb', ccc: 'ddd'}) | |
* | |
* @example | |
* // If value is `null` or `undefined`, the pairDelimiter is not used. | |
* // returns "aaa&bbb" | |
* serialize({aaa: null, bbb: undefined}) | |
* | |
* @example | |
* // Custom delimiters can be used. | |
* // returns "aaa:bbb+ccc:ddd" | |
* serialize({aaa: 'bbb', ccc: 'ddd'}, {pairDelimiter: ':', itemDelimiter: '+'}) | |
*/ | |
export function serialize ( | |
data = {}, | |
{ | |
pairDelimiter = '=', | |
itemDelimiter = '&' | |
} = {} | |
) { | |
return Object.entries(data) | |
.map((pair) => pair.filter(val => val != null).join(pairDelimiter)) | |
.join(itemDelimiter) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment