2015-07-02 13 views
5

ich einige JSON-Daten haben wie folgt:Objektschlüssel Get async.each mit

{ 
    version: 1, 
    partitions: { 
     '0': [ 1616133379 ], 
     '1': [ 1616133378 ], 
     '2': [ 1616133380 ] 
    } 
} 

ich die Daten am Schleifen mit async.each wie folgt:

async.each(topicData.partitions, function(data, callback){ 
    console.log('/brokers/topics/' + topic + '/partitions/' + data + '/state'); 
    callback(); 
}, 
function(err){ 
    if(err) { 
     console.log(err); 
     callback(err); 
    } 
}); 

Der Ausgang Ich bin immer ist:

'/brokers/topics/testing/partitions/1616133379/state' '/brokers/topics/testing/partitions/1616133378/state' '/brokers/topics/testing/partitions/1616133380/state'

Wie Sie die data Artikel durch die async.each Funktion übergeben sehen hält der Wert des Schlüssel/Wert-Paares während ich mag es tatsächlich den Schlüssel zu übergeben diese Ausgabe zu erzeugen:

'/brokers/topics/testing/partitions/0/state' '/brokers/topics/testing/partitions/1/state' '/brokers/topics/testing/partitions/2/state'

Gibt es trotzdem kann ich den Schlüssel im Gegensatz zu dem Wert übergeben werden?

Dies muss asynchron ausgeführt werden.

Dank

+0

möglich Duplikat [async.js jeder in Iterator erhalten index] (http://stackoverflow.com/questions/17516981/async-js-each-get-index -in-iterator) – andlrc

+1

Google 'async.each key' -> [Ich fühle mich glücklich] – andlrc

Antwort

5

Sie forEachOf verwenden könnte, wird der Iterator den Wert und die Schlüssel der einzelnen Positionen im Falle eines Objekts übergeben.

iterator(item, key, callback) - A function to apply to each item in obj. The key is the item's key, or index in the case of an array. The iterator is passed a callback(err) which must be called once it has completed. If no error has occurred, the callback should be run without arguments or with an explicit null argument.

Verbrauch:

async.forEachOf(topicData.partitions, function(item, key, callback){ 
    console.log('/brokers/topics/' + topic + '/partitions/' + key + '/state'); 
    callback(); 
}, function(err){ 
    if(err) { 
    console.log(err); 
    callback(err); 
    } 
}); 
+0

Perfekt, dass gearbeitet hat danke. Ich bin neu in der Async-Bibliothek, also habe ich das noch nicht gesehen –

0

Versuchen Sie, diese in der Schleife zu setzen.

console.log(topicData.partitions.indexOf(data)); 
+0

Das warf nur einen Fehler' console.log (topicData.partitions.indexOf (data)); ^ TypeError: Objekt # hat keine Methode 'indexOf'' –

Verwandte Themen