crafatar/crafatar

View on GitHub
lib/object-patch.js

Summary

Maintainability
A
0 mins
Test Coverage
// Adds Object.get function
// +pathstr+ is a string of dot-separated nested properties on +ojb+
// returns undefined if any of the properties do not exist
// returns the value of the last property otherwise
//
// Object.get({"foo": {"bar": 123}}, "foo.bar"); // 123
// Object.get({"foo": {"bar": 123}}, "bar.foo"); // undefined
Object.get = function(obj, pathstr) {
  var path = pathstr.split(".");
  var result = obj;

  for (var i = 0; i < path.length; i++) {
    var key = path[i];
    if (!result || !Object.prototype.hasOwnProperty.call(result, key)) {
      return undefined;
    } else {
      result = result[key];
    }
  }

  return result;
};