2017-05-01 1 views
0

Ich habe eine Liste der Schlüssel-Wert-Paare und ich versuche, den Schlüssel N mal in einem anderen Array zu speichern. Ich habe mit der Logik zu kämpfen, wenn ich über die list_of_objects iterieren sehe ich keinen Weg, um zu verfolgen, welche Schlüssel-Werte bereits zugewiesen wurden.Speichern von Schlüssel aus Hash in einem anderen Array

var kv={"a":2,"b":1,"c":1}; 
var list_of_objects=[bob,bill,jane,joe];//these are objects 

GOAL

bob.kv="a" 
bill.kv="a" 
jane.kv="b" 
joe.kv="c" 

Hinweise in Reaktion auf einen Kommentar: kv eine Eigenschaft des Objekts bob ist (oder der Rechnung oder im jane, oder joe)

+0

Wirklich nicht klar, was Sie erreichen wollen. Was ist die Beziehung zwischen 'kv' und' Objekten'? – Saravana

+0

@Saravana Ich habe meinem Beitrag eine Notiz hinzugefügt. Hat es das besser erklärt? – Rilcon42

+0

Um klar zu sein, sieht es aus wie bob.kv = a und bill.kv = a, weil der Wert eines in kv ist 2 und das sind die ersten beiden Objekte im Array, ist das richtig? – Pango

Antwort

1

Sie vielleicht ausprobieren möchten Object.keys()

Object.keys(kv).forEach(function(key) { 
    var val = kv[key]; 
    while(val-- > 0) { 
    var obj = objects.shift(); 
    obj.kv = key; 
    console.log(obj) 
    } 
}); 
+0

Entschuldigen Sie die Verwendung von 'shift', wenn Sie das Objekt-Array nicht ändern wollten, behielt ich nur das Beispiel kurz. – MatUtter

1

Ähnlich wie @ MatUtter die Antwort aber nicht diemutierenarray:

var index = 0; 
for (var key in kv) { 
    if (kv.hasOwnProperty(key)) { 
     var val = kv[key]; 
     while (val-- > 0) { 
      list_of_objects[index].kv = key; 
      index++; 
     } 
    }  
} 
Verwandte Themen