UNPKG

@onesy/utils

Version:
28 lines (22 loc) 1.18 kB
import is from './is'; const flatten = function (object, output_) { let keys_ = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; let key_ = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ''; let value_ = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : undefined; let includeObjects = arguments.length > 5 ? arguments[5] : undefined; if (!object) return object; const output = output_ || {}; const value = output_ === undefined ? object : value_; const keys = "".concat(keys_).concat(keys_ ? '.' : '').concat(key_).trim(); if (value !== undefined) { if (includeObjects || is('not-array-object', value)) output[keys] = value; if (!is('not-array-object', value)) { if (is('array', value)) value.forEach((item, index) => flatten(object, output, keys, index, item, includeObjects));else Object.keys(value).forEach(key => flatten(object, output, keys, key, value[key], includeObjects)); } } return output; }; const flattenObject = (object, includeObjects) => { return flatten(object, undefined, undefined, undefined, undefined, includeObjects); }; export default flattenObject;