自定义的嵌套JSON原型函数,用于检查键是否存在,类似于Prototype.hasOwnproperty()。

10 浏览
0 Comments

自定义的嵌套JSON原型函数,用于检查键是否存在,类似于Prototype.hasOwnproperty()。

我目前正在使用这种方法进行操作。对于这种情况需要更好的实现方法。以下是代码:\n

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"));

0
0 Comments

自定义嵌套JSON的原型函数以检查键是否存在的问题是如何出现的以及如何解决的。

首先,这个问题是由于作者误导性的提问而导致的。作者实际上只是想要一个方法来检查JavaScript对象中是否存在嵌套对象的属性。与原型无关。作者创建了一个自定义方法,其中有两个参数,一个是对象,另一个是要检查的属性。在观察了这个问题的回答后,作者得出了结论。

下面是作者用来检查对象中属性是否存在的方法:

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"))

以上代码通过逐级访问给定路径上的属性,检查当前对象是否具有该属性。如果当前对象的类型不是对象,或者它不具有该属性,则返回false。如果遍历完所有组件并且没有返回false,则返回true,表示属性存在。

通过这种方法,作者可以检查嵌套JSON对象中的属性是否存在。这是作者在查看了相关问题的回答后得出的解决方法。

0