2017-01-20 8 views
-1

Ich habe Liste der Array mit object verbunden. Die Anforderung besteht darin, einen neuen Schlüssel zu erstellen, der alle Schlüsselwerte enthält.Kopieren Objektschlüssel in einem anderen Schlüssel des gleichen Objekts

var obj = { 
    all:[ 
    obj.one, 
    obj.two 
    ], 
one:[ 
    'a', 
    'b', 
    'c' 
], 
two:[ 
'd', 
'e', 
'f', 
'g' 
] 
} 

// gewünschte Ergebnis

var obj = { 
     all:[ 
     'a', 
     'b', 
     'c' 
     'd', 
     'e', 
     'f', 
     'g' 
     ], 
    one:[ 
     'a', 
     'b', 
     'c' 
    ], 
    two:[ 
    'd', 
    'e', 
    'f', 
    'g' 
    ] 
    } 
+1

bitte das gewünschte Ergebnis hinzufügen. Was hast du probiert? –

+0

Und warum speichern Sie alle Schlüssel in einer anderen Eigenschaft? – Rajesh

+0

Vermutung, er hat das Objekt mit "eins" und "zwei" Eigenschaften, und er möchte eine "alle" Eigenschaft haben, die sich auf die zwei anderen Eigenschaften bezieht ... Solch ein Labyrinth, und warum das? Ist es nicht einfacher, "obj.one" und "obj.two" statt "obj.all" zu bekommen? du verkomplizierst das ding imo ... – Julo0sS

Antwort

1
function accumulateKeyValues(obj){ 
    var accumulated = []; 
    for(var key in obj) 
     accumulated = accumulated.concat(obj[key]); 
    obj["all"] = accumulated; 
} 

Beispiel:

function accumulateKeyValues(obj){ 
 
    var accumulated = []; 
 
    for(var key in obj) 
 
     accumulated = accumulated.concat(obj[key]); 
 
    obj["all"] = accumulated; 
 
} 
 

 
var obj = { 
 
    one:[ 
 
     'a', 
 
     'b', 
 
     'c' 
 
    ], 
 
    two:[ 
 
     'd', 
 
     'e', 
 
     'f', 
 
     'g' 
 
    ] 
 
}; 
 

 
accumulateKeyValues(obj); 
 

 
console.log(obj);

+0

Angenommen natürlich, dass die Werte alle Arrays sind. –

1

Sie können alle Schlüssel des Objekts abrufen und alle Werte für ein neues Array übernehmen.

var obj = { one:['a', 'b', 'c'], two: ['d', 'e', 'f', 'g'] }; 
 

 
obj.all = Object.keys(obj).reduce(function (r, k) { 
 
    return r.concat(obj[k]); 
 
}, []); 
 

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

Verwandte Themen