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