2016-09-06 6 views
0

Ich glaube nicht, dass dies ein Duplikat ist, weil es ein Objekt behandelt, das mehrere Datensätze hat, obwohl es sehr ähnlich ist, benötigen meine Anforderungen mehr Schleifen, denke ich. So oder so, ich kann es nicht für mich arbeiten lassen. Ich lerne gerade hier und das ist zu komplex für mich. Ich brauche einige Beispiele, die ein Objekt wie dieses verwenden. Ich habe versucht, einige ähnliche Frage-Antworten zu verwenden, aber scheitern immer aufgrund der zusätzlichen Ebene von Schleifen benötigt.Zählen doppelte Werte in einem multidimensionalen Array

Mein aktueller Code gibt eine einfache unsortierten Liste:

for (i=0; i<data.length; i++) 
    if (data[i]['name']) 
     $("#output").append("<p>"+data[i]['entrynum']+data[i]['name']); 

Was ich will, ist so etwas wie:

  • j0hn James
  • Fr3d
  • S @ m Wise
  • Fr3d
  • Fr3d
  • S @ m Wise
  • Fr3d
  • Fred
  • S @ m Wise
  • S @ m Wise
  • Frank
  • Frank
  • Bill
  • Frank
  • Bill

auszugeben, dass eine Liste Berichte (vorzugsweise um DESC):

  • 5 Fr3d
  • 4 S @ m Wise
  • 3 Frank
  • 2 Bill
  • 1 j0hn James
+0

Was ist ein "Multi-Record JSON-Objekt"? Es gibt kein "JSON-Objekt" und weder JSON noch JavaScript haben "Datensätze" oder "Datensätze". –

+0

Geben Sie ein Beispiel für das Objekt in Ihre Frage ein. –

+0

Wahrscheinlich ist SO nicht die beste Umgebung für Ihre Art von Frage. Ich würde vorschlagen, einen Beratungsdienst zu finden, der Sie Schritt für Schritt durch alles führt. –

Antwort

0

Ich habe viel über die Nacht gelernt! Hier ist, was ich habe jetzt:

//convert my multidimensional object into a simple list 
var clublist = []; 
for (i=0; i<data.length; i++) 
    if (data[i]['club']) 
     clublist.push(data[i]['club']); 

//counting, converted into object with occurrence & count 
var counts = {}; 
clublist.forEach(function(x) { counts[x] = (counts[x] || 0)+1; }); 

//converted into an array to be sorted 
var clubs = []; 
for (var temp in counts) 
    clubs.push([temp, counts[temp]]) 

//sorted array, descending 
clubs.sort(function(a, b) { return b[1] - a[1] }) 

//final output to page 
for (i=0; i<clubs.length; i++) 
    $("#output").append("<p>"+clubs[i][1]+" - "+clubs[i][0]); 

Dies scheint jedoch wie viele Schritte ... alle Ideen auf, so dass diese kompakter?

Verwandte Themen