@newdash/newdash
Version:
javascript/typescript utility library
41 lines (40 loc) • 1.88 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transform = void 0;
const arrayEach_1 = __importDefault(require("./.internal/arrayEach"));
const baseForOwn_1 = __importDefault(require("./.internal/baseForOwn"));
const isBuffer_1 = __importDefault(require("./isBuffer"));
const isObject_1 = __importDefault(require("./isObject"));
const isTypedArray_1 = __importDefault(require("./isTypedArray"));
const isArray_1 = __importDefault(require("./isArray"));
const getIteratee_1 = __importDefault(require("./.internal/getIteratee"));
const isFunction_1 = __importDefault(require("./isFunction"));
const baseCreate_1 = __importDefault(require("./.internal/baseCreate"));
const overArg_1 = __importDefault(require("./.internal/overArg"));
/**
* @ignore
*/
const getPrototype = (0, overArg_1.default)(Object.getPrototypeOf, Object);
function transform(object, iteratee, accumulator) {
const isArr = (0, isArray_1.default)(object), isArrLike = isArr || (0, isBuffer_1.default)(object) || (0, isTypedArray_1.default)(object);
iteratee = (0, getIteratee_1.default)(iteratee, 4);
if (accumulator == null) {
const Ctor = object && object.constructor;
if (isArrLike) {
accumulator = isArr ? new Ctor : [];
}
else if ((0, isObject_1.default)(object)) {
accumulator = (0, isFunction_1.default)(Ctor) ? (0, baseCreate_1.default)(getPrototype(object)) : {};
}
else {
accumulator = {};
}
}
(isArrLike ? arrayEach_1.default : baseForOwn_1.default)(object, (value, index, object) => iteratee(accumulator, value, index, object));
return accumulator;
}
exports.transform = transform;
exports.default = transform;