Object getIf

by XcsN

JavaScript

let obj = {
  1: {
    result: {
      live: [1, 2],
      pre: [3, 4]
    }
  },
  2: {
    result: {
      live: [1, 2],
      pre: [3, 4]
    }
  }
};

Object.getIf = function(obj, keys, defaultValue) {
  if (!(obj instanceof Object)) {
    return defaultValue;
  }

  var key = keys instanceof Array ? keys.shift() : keys;
  if (key || key === 0 || key === '0') {
    var splits = key.split('.'),
      val = Object.assign({}, obj),
      result = true;
    for (var x = 0, l = splits.length; x < l; x++) {
      if (typeof val[splits[x]] === 'undefined') {
        result = false;
        break;
      }
      val = val[splits[x]];
    } 

    if (result) {
      return val;
    }
  }

  return keys instanceof Array && keys.length > 0 ? Object.getIf(obj, keys, defaultValue) : defaultValue;
}

console.log(Object.getIf(obj, [], [1, 0]));