UNPKG

foop

Version:

interfaces that describe their intentions.

53 lines (48 loc) 4.27 kB
/* eslint no-unused-expressions: "OFF" */ /* eslint guard-for-in: "OFF" */ var toObj = require('../../cast/toObj') var hasOwnProperty = require('../../util/hasOwnProperty') /** * Iterates over own enumerable string keyed properties of an object and * invokes `iteratee` for each property. The iteratee is invoked with three * arguments: (value, key, object). Iteratee functions may exit iteration * early by explicitly returning `false`. * * @since 5.0.0-beta.6 * @memberOf loop * * @param {Object} object The object to iterate over. * @param {Function} iteratee The function invoked per iteration. * @return {Object} object passed in originally * * @fork 0.3.0 * @category Object * * @NOTE for array, object, and string, iterates over property/index/key * @TODO !!! did not return object, consistently the others do, why? * * @see forEach, forEachRight, forIn, forInRight, forOwnRight * {@link https://github.com/lodash/lodash/blob/master/forOwn.js lodash-forown} * @see {@link lodash-forown} * * @example * * function Foo() { * this.a = 1 * this.b = 2 * } * * Foo.prototype.c = 3 * * forOwn(new Foo, (value, key) => console.log(key)) * //=> Logs 'a' then 'b' (iteration order is not guaranteed). * */ function forOwn(object, iteratee) { var obj = toObj(object) for (var key in obj) { hasOwnProperty(obj, key) && iteratee(obj[key], key, obj) } return obj } module.exports = forOwn //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yT3duLmpzIiwic291cmNlcyI6WyJmb3JPd24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG5vLXVudXNlZC1leHByZXNzaW9uczogXCJPRkZcIiAqL1xuLyogZXNsaW50IGd1YXJkLWZvci1pbjogXCJPRkZcIiAqL1xuY29uc3QgdG9PYmogPSByZXF1aXJlKCcuLi8uLi9jYXN0L3RvT2JqJylcbmNvbnN0IGhhc093blByb3BlcnR5ID0gcmVxdWlyZSgnLi4vLi4vdXRpbC9oYXNPd25Qcm9wZXJ0eScpXG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBhbiBvYmplY3QgYW5kXG4gKiBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWVcbiAqIGFyZ3VtZW50czogKHZhbHVlLCBrZXksIG9iamVjdCkuIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb25cbiAqIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gKlxuICogQHNpbmNlIDUuMC4wLWJldGEuNlxuICogQG1lbWJlck9mIGxvb3BcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm4ge09iamVjdH0gb2JqZWN0IHBhc3NlZCBpbiBvcmlnaW5hbGx5XG4gKlxuICogQGZvcmsgMC4zLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqXG4gKiBATk9URSBmb3IgYXJyYXksIG9iamVjdCwgYW5kIHN0cmluZywgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0eS9pbmRleC9rZXlcbiAqIEBUT0RPICEhISBkaWQgbm90IHJldHVybiBvYmplY3QsIGNvbnNpc3RlbnRseSB0aGUgb3RoZXJzIGRvLCB3aHk/XG4gKlxuICogQHNlZSBmb3JFYWNoLCBmb3JFYWNoUmlnaHQsIGZvckluLCBmb3JJblJpZ2h0LCBmb3JPd25SaWdodFxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvbWFzdGVyL2Zvck93bi5qcyBsb2Rhc2gtZm9yb3dufVxuICogQHNlZSB7QGxpbmsgbG9kYXNoLWZvcm93bn1cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgICBmdW5jdGlvbiBGb28oKSB7XG4gKiAgICAgICB0aGlzLmEgPSAxXG4gKiAgICAgICB0aGlzLmIgPSAyXG4gKiAgICAgfVxuICpcbiAqICAgICBGb28ucHJvdG90eXBlLmMgPSAzXG4gKlxuICogICAgIGZvck93bihuZXcgRm9vLCAodmFsdWUsIGtleSkgPT4gY29uc29sZS5sb2coa2V5KSlcbiAqICAgICAvLz0+IExvZ3MgJ2EnIHRoZW4gJ2InIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICpcbiAqL1xuZnVuY3Rpb24gZm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgY29uc3Qgb2JqID0gdG9PYmoob2JqZWN0KVxuXG4gIGZvciAoY29uc3Qga2V5IGluIG9iailcbiAgICBoYXNPd25Qcm9wZXJ0eShvYmosIGtleSkgJiYgaXRlcmF0ZWUob2JqW2tleV0sIGtleSwgb2JqKVxuXG4gIHJldHVybiBvYmpcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmb3JPd25cbiJdLCJuYW1lcyI6WyJjb25zdCJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUFBLEdBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDO0FBQ3pDQSxHQUFLLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQzNELFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7RUFDaENBLEdBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQzs7RUFFekIsS0FBS0EsR0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHO0lBQ25CLEVBQUEsY0FBYyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBQTs7RUFFMUQsT0FBTyxHQUFHO0NBQ1g7O0FBRUQsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNOyJ9