2016-10-31 7 views
0

habe ich ein Objekt mit dieser Struktur {aaas:"good","aasda":"ok","adasa":"good","ascas":"good","asdasd":"nw","asdasda":"nw",asdqw:"nw","assa":"ok","asscsa":"ok"}So gruppieren Objektschlüssel von Wert in AngularJS

Hier habe ich zu einer Gruppe mit dem ähnlichen Wert jeder Taste wollen und diese neue Aufgabe gestellt. Genau wie newObj={"aaas":"good","adasa":"good","ascas":"good"}

Antwort

1

Sie könnten ein Objekt und eine Gruppe nach Wert verwenden.

var object = { aaas: "good", aasda: "ok", adasa: "good", ascas: "good", asdasd: "nw", asdasda: "nw", asdqw: "nw", assa: "ok", asscsa: "ok" }, 
 
    grouped = {}; 
 

 
Object.keys(object).forEach(function (k) { 
 
    if (!grouped[object[k]]) { 
 
     grouped[object[k]] = {}; 
 
    } 
 
    grouped[object[k]][k] = object[k]; 
 
}); 
 

 
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }

1

Sie können wie etwas tun, um dieses

var obj = {'aaas':"good","aasda":"ok","adasa":"good","ascas":"good","asdasd":"nw","asdasda":"nw",asdqw:"nw","assa":"ok","asscsa":"ok"}; 
    var newObj={}; 
    angular.forEach(obj, function(value, key) { 
    if(value=="good"){ 
    newObj[key]=value; 
    } 
    }); 

hofft, dass dies hilft Ihnen .. Danke

+0

Vielen Dank @Ujjwal kaushik –

1

Das Objekt braucht ein wenig Arbeit (Ihr fehlte Anführungszeichen):

const data = { 
    "aaas":"good", 
    "aasda":"ok", 
    "adasa":"good", 
    "ascas":"good", 
    "asdasd":"nw", 
    "asdasda":"nw", 
    "asdqw":"nw", 
    "assa":"ok", 
    "asscsa":"ok" 
}; 

groupUp = (input) => { 
    return input.reduce(arr, (key, val) => { 
    if (!_.includes(arr, key)) { 
     arr.push(_.groupBy(input, key)); 
    } 
    return arr; 
    }, []); 
} 

console.log(groupUp(data)); 

Das sollte bekommen, was Sie wollen (ich habe es nicht getestet, und es verwendet lodash Methoden, so dass Sie vielleicht etwas neu schreiben möchten, wenn Sie nicht verwenden lodash).

+0

Danke für Ihre Hilfe @rrd. –