'use strict'; var callable = require('./valid-callable') , forEach = require('./for-each') , call = Function.prototype.call , defaultCb = function (value, key) { return [key, value]; }; module.exports = function (obj/*, cb, thisArg, compareFn*/) { var a = [], cb = arguments[1], thisArg = arguments[2]; cb = (cb == null) ? defaultCb : callable(cb); forEach(obj, function (value, key, obj, index) { a.push(call.call(cb, thisArg, value, key, this, index)); }, obj, arguments[3]); return a; };