2016-09-09 6 views
0

Ich habe die folgenden JSON. Ich möchte das durchqueren und Werte für die Schlüssel erhalten, bei denen der 'check' Wert 'true' ist.Angular - Werte an einen JSON anhängen

{ 
    "A_B":{ 
    "ID":"09|_|06", 
    "address":"ABC", 
    "name":"2222222222", 
    "Documents":{ 
     "1":{ 
     "format":"xlsx" 
     }, 
     "2":{ 
     "format":"pdf" 
     } 
    }, 
    "check":true 
    }, 
    "C_B":{ 
    "ID":"0a|_|0b", 
    "address":"Los Angeles", 
    "name":"4444444444", 
    "Documents":{ 
     "1":{ 
     "format":"docx" 
     }, 
     "4":{ 
     "format":"xlsx" 
     } 
    }, 
    "check":true 
    }, 
    "C_E":{ 

    "ID":"05|_|06", 
    "address":"", 
    "name":"1111111111", 
    "Documents":{ 
     "5":{ 
     "format":"xlsx" 
     } 
    }, 
    "check":false 
    } 
} 

In dem obigen Beispiel sollten Werte für A_B und C_B zum neuen json hinzugefügt werden. Die neue json würde wie folgt aussehen

{ 
    "A_B":{ 
    "ID":"09|_|06", 
    "address":"ABC", 
    "name":"2222222222", 
    "Documents":{ 
     "1":{ 
     "format":"xlsx" 
     }, 
     "2":{ 
     "format":"pdf" 
     } 
    }, 
    "check":true 
    }, 
    "C_B":{ 
    "ID":"0a|_|0b", 
    "address":"Los Angeles", 
    "name":"4444444444", 
    "Documents":{ 
     "1":{ 
     "format":"docx" 
     }, 
     "4":{ 
     "format":"xlsx" 
     } 
    }, 
    "check":true 
    } 
} 

Ich bin in der Lage, diese IDs [A_B und C_B] zu bekommen, wo 'Prüfen' === wahr, den Code unten mit

var IDs = Object.keys(completeJson); 
var checkTrueIDs = IDs.reduce(function(initArr,ID) { 
     if(completeJson.check === true) { 
       initArr.push(ID); 
     } 
     return initArr; 
},[]); 
console.log("IDs wth check === true - " + checkTrueIDs); 

Allerdings bin ich nicht können vollständige Objekte für diese IDs erhalten und sie zu einem neuen JSON hinzufügen. Wenn ich

tun
var newJson = {} 

und dann in der, wenn die Bedingung (unter dem Push)

newJson = completeJson[ID]; 

diese überschreibt die vorherigen Werte, so ich am Ende mit nur einem Objekt links bin.

+0

Es gibt _any_ json in dieser Frage nicht. Das sind nur JavaScript-Objekte. – Cerbrus

Antwort

0

Sie können über das Objekt, das Sie haben, iterieren und wenn seine Schlüsselüberprüfung wahr ist, dann fügen Sie es dem newJson-Objekt hinzu.

var newJson ={}; 
    angular.forEach(completeJson, function(value, key) { 
    if(value.check){ 
    newJson[key] = value; 
    } 
    }); 
console.log(newJson);