查找对象树是否具有给定属性

Find if an object tree has a given property

本文关键字:属性 对象 是否 查找      更新时间:2023-09-26

>我正在传递一组选项作为对象:

var options={
    sortRules:[
        {...}, // rule 1
        {...}, // rule 2
        // etc.
    ],
    filterRules:[
        {...}, // rule 1
        {...}, // rule 2
        // etc.
    ],
    etc.
};

我的问题:如果任何规则包含"编码名称"属性,我需要通过 Web 服务尽快检索代码字典。如果没有传递"编码名称"属性,则不需要字典。

检查此对象层次结构中是否存在"encodedName"属性的最有效方法是什么?遍历所有对象和子对象听起来很痛苦,我想知道是否有更快的方法。

[编辑]:也许我应该提到我的另一个想法:使用 JSON.stringify 将对象转换为字符串,然后使用 indexOf 搜索"encodedName"。不过,我不确定它是否比子对象迭代更有效。

我会

考虑使用两种类型的规则 - 一种带有 encodedName 属性,一种没有 encodedName 属性。这样,您可以从类别推断规则是否包含相关属性。

或者,我会使用递归函数遍历所有属性以找到您要查找的属性

您可以

遍历options对象,然后检查每个属性(sortRules,filterRules)是否具有该属性。

for(var rules in options){
    if(options[rules].hasOwnProperty("encodedName"){...}
}

应该这样做。

刚刚发现每个规则属性都是一个数组,在这种情况下,没有其他方法可以遍历它。