鍍金池/ 問(wèn)答/HTML/ 輸入屬性的深度,和屬性,輸出屬性的值

輸入屬性的深度,和屬性,輸出屬性的值

有一個(gè)如下對(duì)象:
要求輸入屬性和這個(gè)屬性的深度,輸出這個(gè)屬性對(duì)應(yīng)的值
為什么不能直接輸入 屬性,因?yàn)榭赡軙?huì)重名,上面JSON中最外層的StatusResult下的Status就是同名

findValue(key,depth)

{
    "Status":"200",
    "Message":"查詢(xún)成功",
    "OrderNumber":null,
    "Result":{
        "Partners":[
            {
                "StockName":"xx",
                "StockType":"自然人股東",
                "StockPercent":"49.1900%",
                "ShouldCapi":"491.900000"
            }

        ],
        "Employees":[
            {
                "Name":"xx",
                "Job":"執(zhí)行董事"
            },
            {
                "Name":"xx",
                "Job":"經(jīng)理"
            }
        ],
        "Branches":[
            {
                "CompanyId":"8dc057af59e908b6a1c05d74de114134",
                "RegNo":"500902300083458",
                "Name":"北京小桔科技有限公司重慶分公司",
                "BelongOrg":"重慶市工商行政管理局南岸區(qū)分局經(jīng)開(kāi)區(qū)局",
                "CreditCode":null,
                "OperName":"xx"
            }
        ],
        "ChangeRecords":[
            {
                "ProjectName":"投資人",
                "BeforeContent":"自然人股東;",
                "AfterContent":"人股東;",
                "ChangeDate":"2017-07-21T00:00:00+08:00"
            }
        ],
        "ContactInfo":{
            "WebSite":[
                {
                    "Name":null,
                    "Url":"www.xiaojukeji.com"
                }
            ],
            "PhoneNumber":"010-83043726",
            "Email":"zhangyimei@diditaxi.com.cn"
        },
        "Industry":{
            "Industry":"科學(xué)研究和技術(shù)服務(wù)業(yè)",
            "SubIndustry":"科技推廣和應(yīng)用服務(wù)業(yè)"
        },
        "KeyNo":"4659626b1e5e43f1bcad8c268753216e",
        "Name":"北京小桔科技有限公司",
        "No":"110108015068911",
        "BelongOrg":"海淀分局",
        "OperName":"程維",
        "StartDate":"2012-07-10T00:00:00+08:00",
        "EndDate":null,
        "Status":""
    }
}

比如

findval("Partners",2)輸出

[{
    "StockName":"xx",
    "StockType":"自然人股東",
    "StockPercent":"49.1900%",
    "ShouldCapi":"491.900000"
    }
]

findVal("WebSite",3)輸出

[{
    "Name":null,
    "Url":"www.xiaojukeji.com"
}],

findVal("WebSite",3)輸出

回答
編輯回答
遲月

下面函數(shù)用法 findVal("WebSite", 3, obj) 其中的obj為你查找的對(duì)象,返回的是一個(gè)數(shù)組,包含滿(mǎn)足條件的所有值。

/**
*keyname: 屬性名稱(chēng)
*layer: 定位在哪一層
*obj: 待查找對(duì)象
*cLayer: 當(dāng)前所在層,使用者無(wú)需關(guān)心,遞歸用
*/
function findVal(keyname, layer, obj, cLayer) {
    var result = [];
    var currentLayer = cLayer || 1;
    var objType = typeof obj;
    if(currentLayer > layer 
        || objType === "string"
        || objType === "number" 
        || obj === null
        || obj === undefined) {
        return result;
    }

    for(var key in obj) {
        if(key == keyname && currentLayer == layer) {
            result.push(obj[key]);
        }
        var f = find(keyname, layer, obj[key], currentLayer + 1);
        if(f && f.length > 0) {
            result.push(...f);
        }
    }
    return result;
}
2017年5月27日 02:53