| "use strict"; |
| |
| var callable = require("./valid-callable") |
| , isValue = require("./is-value") |
| , 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 = isValue(cb) ? callable(cb) : defaultCb; |
| |
| forEach( |
| obj, |
| function (value, key, targetObj, index) { |
| a.push(call.call(cb, thisArg, value, key, this, index)); |
| }, |
| obj, arguments[3] |
| ); |
| return a; |
| }; |