function flatten(obj, options) {
	return Object.keys(obj).reduce((accu, key) => {
		step(obj[key], key, accu, options);
		return accu;
	}, {});
}
/**
 * flatten an object means each keys are a jsonpath.
 * jsperf: https://jsperf.com/talend-flatten
 * @param {object} obj the source object
 * @param {object} options
 * @return {object} flatten object
 * @example
 * flatten({ level1: { level2: 'foo' }})
 * // { 'level1.level2': 'foo' }
 */
flatten an object means each keys are a jsonpath.
flatten an object means each keys are a jsonpath .
function flatten(obj, options) {
	return Object.keys(obj).reduce((accu, key) => {
		step(obj[key], key, accu, options);
		return accu;
	}, {});
}
function flatten ( obj , options ) { return Object . keys ( obj ) . reduce ( ( accu , key ) => { step ( obj [ key ] , key , accu , options ) ; return accu ; } , { } ) ; }
flatten an object means each keys are a jsonpath.
flatten an object means each keys are a jsonpath .