22 lines
		
	
	
		
			569 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			569 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;
 | |
| };
 |