diff options
Diffstat (limited to 'src/app/utils/data_utils.js')
| -rw-r--r-- | src/app/utils/data_utils.js | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/app/utils/data_utils.js b/src/app/utils/data_utils.js new file mode 100644 index 0000000..327e594 --- /dev/null +++ b/src/app/utils/data_utils.js @@ -0,0 +1,34 @@ +/** + * Data manipulation utilities. + * @module app/utils/data_utils + */ + +/** + * Convert an enum to a lookup + * @param {Object} dictionary: number -> string + * @return {Object} dictionary: string -> number + */ +export const enumLookup = (dict) => + Object.entries(dict).reduce((lookup, pair) => { + lookup[pair[1]] = parseInt(pair[0]); + return lookup; + }, {}); + +/** + * Divide an array into N-item chunks + * @param {Array} arr array to be chunked + * @param {number} size items per chunk + * @return {Array} array of array chunks + */ +export const chunk = (arr, size) => + arr.length > size + ? [arr.slice(0, size), ...chunk(arr.slice(size), size)] + : [arr]; + +/** + * Delay during async operation + * @param {number} delay time to delay + * @return {Promise} promise that resolves after a delay + */ +export const delay = (delay = 1) => + new Promise((resolve) => setTimeout(resolve, delay)); |
