sugar
Version:
A Javascript utility library for working with native objects.
25 lines (21 loc) • 746 B
JavaScript
;
var classChecks = require('../../common/var/classChecks'),
isArrayIndex = require('../../common/internal/isArrayIndex'),
mapWithShortcuts = require('../../common/internal/mapWithShortcuts'),
coreUtilityAliases = require('../../common/var/coreUtilityAliases');
var isArray = classChecks.isArray,
forEachProperty = coreUtilityAliases.forEachProperty;
function enumerateWithMapping(obj, map, fn) {
var arrayIndexes = isArray(obj);
forEachProperty(obj, function(val, key) {
if (arrayIndexes) {
if (!isArrayIndex(key)) {
return;
}
key = +key;
}
var mapped = mapWithShortcuts(val, map, obj, [val, key, obj]);
fn(mapped, key);
});
}
module.exports = enumerateWithMapping;