用于嵌套json的自定义原型函数来检查存在的键,如Prototype.hasOwnproperty()

时间:2017-10-09 07:11:47

标签: javascript json

我目前正在通过此方法执行此操作。需要更好地实现此场景: 以下是:

var testjson = {  
   "key1":"val1",
   "key2":"val2",
   "key3":{  
      "k2":"v2",
      "k3":{  
         "k4":"v4",
         "k5":"v5"
      }
   },
   "haskey": function (base, path) {
        var current = base;
        var components = path.split(".");
        for (var i = 0; i < components.length; i++) {
            if ((typeof current !== "object") || (!current.hasOwnProperty(components[i]))) {
                return false;
            }
            current = current[components[i]];
        }
        return true;
    }
}

console.log( testjson.haskey(testjson,"key3.k3.k4"));

1 个答案:

答案 0 :(得分:0)

首先很抱歉提出误导性的问题。我只需要一个方法来检查嵌套对象属性是否存在于JavaScript对象中。这个问题与原型无关。我刚刚创建了一个自定义方法,其中两个参数用于对象,另一个用于要检查的属性。这很好用,我在查看此问题后得出结论:&Checking if a key exists in a JavaScript object?

这是我在Object中检查属性是否存在的方法

var testobject = {
  "key1": "value",
  "key2": {
    "key3": "value"
  }
}


function checkproperty(object, path) {
  var current = object;
  var components = path.split(".");
  for (var i = 0; i < components.length; i++) {
    if ((typeof current !== "object") || (!current.hasOwnProperty(components[i]))) {
      return false;
    }
    current = current[components[i]];
  }
  return true;
}

console.log(checkproperty(testobject, "key2.key3"))