自定义的嵌套JSON原型函数,用于检查键是否存在,类似于Prototype.hasOwnproperty()。
自定义的嵌套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"));
自定义嵌套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对象中的属性是否存在。这是作者在查看了相关问题的回答后得出的解决方法。