Lodash: Konstruowanie pojedynczego obiektu z wielu - Właściwości scalania / nadpisywania

Uwaga: Złożyłem to pytanie pod lodash, ponieważ jestem pewien, że może mi to pomóc w rozwiązaniu tego problemu, ale nie pokazałem tego teraz

Mam obiekt opisujący różne role użytkowników i ich uprawnienia;

Będę mieć jakieś 10-15 ról zdefiniowanych jako „takie” (nie odzwierciedla to kodu aplikacji, ale sam problem):

    var role1 = {
    views: {
        v1: {access: true},
        v2: {access: false},
        v#: {access: false}
    }
}

var role2 = {
    views: {
        v1: {access: false},
        v2: {access: true},
        v3: {access: true},
    }
}

Połączony użytkownik będzie miał wiele ról; W tym przykładzie może to być['role1', 'role2']i z tego muszę skonstruować singielpermissions obiekt, który będzie kombinacją wszystkich rekwizytów zdefiniowanych we wszystkich rolach użytkownika.

Jest to zasadniczo oparte na białej liście, gdzie wszystkie „prawdziwe” właściwości powinny przesłonić wszystko, co zostało zdefiniowane jako fałszywe. Tak więc oczekiwany wynik powinien być:

permissions = {
    views: {
        v1: {access: true},
        v2: {access: true},
        v2: {access: true}
    }
}

Nie jestem pewien, jak sobie z tym poradzić bez polegania na szalonych zagnieżdżonych pętlach

Oto punkt wyjścia w JSBin:http://jsbin.com/usaQejOJ/1/edit?js,console

Dzięki za pomoc!

questionAnswers(1)

yourAnswerToTheQuestion