function forEach(data, callback) {
  if (data && isFunction(callback)) {
    if (Array.isArray(data) || isNumber(data.length)
    /* array-like */
    ) {
        toArray(data).forEach(function (value, key) {
          callback.call(data, value, key, data);
        });
      } else if (isObject(data)) {
      Object.keys(data).forEach(function (key) {
        callback.call(data, data[key], key, data);
      });
    }
  }

  return data;
}
function forEach(data, callback) {
  if (data && isFunction(callback)) {
    if (Array.isArray(data) || isNumber(data.length)
    
    ) {
        toArray(data).forEach(function (value, key) {
          callback.call(data, value, key, data);
        });
      } else if (isObject(data)) {
      Object.keys(data).forEach(function (key) {
        callback.call(data, data[key], key, data);
      });
    }
  }

  return data;
}
function forEach ( data , callback ) { if ( data && isFunction ( callback ) ) { if ( Array . isArray ( data ) || isNumber ( data . length ) /* array-like */ ) { toArray ( data ) . forEach ( function ( value , key ) { callback . call ( data , value , key , data ) ; } ) ; } else if ( isObject ( data ) ) { Object . keys ( data ) . forEach ( function ( key ) { callback . call ( data , data [ key ] , key , data ) ; } ) ; } } return data ; }
Iterate the given data.
@param {*} data - The data to iterate.
@param {Function} callback - The process function for each element.
@returns {*} The original data.
Iterate the given data .