0

国を表すオブジェクトのリストがあります。

各国には多くの従業員がいます。各従業員オブジェクトには、独自のプロパティとそのマネージャーへの参照があります。

従業員には、実在しないマネージャーまたは別の国にいるマネージャーがいる可能性があります。

従業員とマネージャーの間の親子関係を持つ新しいオブジェクトを再構築しようとしています。

var Markets = {
"CH":{
        "Resources": {
            "user1": {"First name": "John", "Last name": "Blue", "Job Title": "Job 1", "Email": "john@email", "Manager": ""},               
            "user2": {"First name": "Bob", "Last name": "Black", "Job Title": "Job 2", "Email": "bob@email", "Manager": "user1"},
            "user3": {"First name": "Joe", "Last name": "Brown", "Job Title": "Job 3", "Email": "joe@email", "Manager": "user1"},
            "user4": {"First name": "Jack", "Last name": "White", "Job Title": "Job 4", "Email": "jack@email", "Manager": "user2"}
            "user5": {"First name": "Jess", "Last name": "Red", "Job Title": "Job 5", "Email": "jess@email", "Manager": ""}
        }
    }

したがって、私の新しいオブジェクトは次のようになります。

user 1
    user 2
    user 3
        user 4
user 5

次の関数を思いつきましたが、第 2 レベルのマネージャーを第 1 レベルに確実に再割り当てするために再帰的にするのに苦労しています。

function countryOrgChart(market) {
    var orgChartData = {};
    for (var resource in window['Markets'][market]['Resources']) {
        orgChartData[resource] = [];
    }
    orgCharDataTmp = orgChartData;
    for (var resource in orgCharDataTmp {
        var manager = window['Markets'][market]['Resources'][resource]['Manager'];
        if (manager in orgChartData) { 
            orgChartData[manager].push(resource); 
            delete orgChartData[resource]; 
        }
    }
    return(orgChartData);

}

4

1 に答える 1