21 lines
570 B
JavaScript
21 lines
570 B
JavaScript
"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;
|
|
};
|