UNPKG

@kitmi/utils

Version:

A JavaScript utility library for both server and browser

35 lines (30 loc) 1.06 kB
import _get from './get'; import _set from './set'; /** * Push an value into an array element of a collection * @alias object.pushIntoBucket * @param {Object} collection * @param {string} key * @param {Object} value * @param {boolean} [flattenArray=false] - Whether to flatten the array, if the given value is an array. * @returns {*} The modified bucket */ function pushIntoBucket(collection, key, value, flattenArray) { let bucket = _get(collection, key); if (Array.isArray(bucket)) { if (Array.isArray(value) && flattenArray) { bucket = bucket.concat(value); _set(collection, key, bucket); } else { bucket.push(value); } } else if (bucket == null) { bucket = Array.isArray(value) && flattenArray ? value.concat() : [value]; _set(collection, key, bucket); } else { bucket = Array.isArray(value) && flattenArray ? [bucket, ...value] : [bucket, value]; _set(collection, key, bucket); } return bucket; } export default pushIntoBucket;