@onesy/utils
Version:
28 lines (22 loc) • 1.18 kB
JavaScript
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;