2016-07-13 3 views
0

Ich bin mit diesem für eine Weile ratlos gewesen. Grundsätzlich habe ich eine Reihe von Objekten (die sich nur auf die "00" Objekt jetzt), und ich möchte zu einer Gruppe zusammen, um die Bestscore Eigenschaften, wie folgt aus:Trennen Sie jede unterschiedliche JavaScript-Eigenschaft innerhalb des Objekts innerhalb Array

..

User Group

Apfel

..

User Group

Banane,

Karambole

..

User Group

Tomate

..

Hier ist der Code, den ich bisher ... Ich bin auf diese ein Neuling, so dass ich bin ein bisschen ratlos.

var playerBatch = new Array(); 

playerBatch["00"] = 
[ 
{userName: "apple", bestScore: "10"} 
{userName: "banana", bestScore: "20"} 
{userName: "starfruit", bestScore: "20"} 
{userName: "tomato", bestScore: "30"} 
]; 


var batch = "00"; 

for (i=0; i < playerBatch[batch].length; i++) { 
    if (playerBatch[batch][i].bestScore == "10") { 
     document.write("User Group") 
     document.write(playerBatch[batch][i].userName) 
    } 
}; 

Wenn jemand irgendwelche Ideen hat, wie man das anpackt, wäre ich sehr dankbar.

Vielen Dank.

+1

wissen Sie, welche Funktionen sind? – madalinivascu

+0

Eigentlich ja. Ich benutze einen in meinem tatsächlichen Code. Ich poste gerade eine super vereinfachte Version des Codes, um herauszufinden, * was * in die Funktion zu setzen. Also kein Grund, unhöflich zu sein. – zed

Antwort

0

BEARBEITEN: Es sieht so aus, als ob Sie in dem Beispiel die Kommata zwischen den Objekten in playerBatch["00"] fehlen. Das wird alles verschlingen, bevor Sie in die Sortierarbeit kommen.

Um mehrere Ergebnisse zu gruppieren, müssen alle Übereinstimmungen zwischengespeichert werden (wahrscheinlich in einem Array mit lokalem Bereich), bevor document.write() aufgerufen wird.

... und wenn Sie möchten die Gruppen alle von bestScore zur Liste aus, werden Sie in einer Schleife durch das Array haben eine Liste (Array) von möglichen bestScore Werten zu bauen, dann Schleife durch, dass mit so etwas wie der Code du hast es schon geschrieben.

Das heißt, Sie werden wahrscheinlich die (Output-) Zeichenfolge (n), die Sie in das Dokument schreiben, massieren wollen - um zwischen "User Group" und den resultierenden Übereinstimmungen Platz zu schaffen, Zeilenumbrüche zu kontrollieren oder Zeilen mit semantischem HTML umschließen. Abhängig davon, wie komplex Ihr fertiges Layout sein muss, können Sie davon profitieren, eine Templating-Bibliothek wie Handelbars oder sogar Nano (templates) zu verwenden.

var playerBatch = new Array(); 
 

 
playerBatch["00"] = [{ 
 
    userName: "apple", 
 
    bestScore: "10" 
 
}, { 
 
    userName: "banana", 
 
    bestScore: "20" 
 
}, { 
 
    userName: "starfruit", 
 
    bestScore: "20" 
 
}, { 
 
    userName: "tomato", 
 
    bestScore: "30" 
 
}]; 
 

 

 
var batch = "00", 
 
    groupArray = []; 
 

 
for (i = 0; i < playerBatch[batch].length; i++) { 
 
    if (playerBatch[batch][i].bestScore == "20") { 
 
    groupArray.push(playerBatch[batch][i].userName) 
 
    } 
 
}; 
 

 
if(groupArray.length){ 
 
    document.write("User Group: "); 
 
    document.write(groupArray.join(", ")); 
 
}

0

Dank Ito, dies zusammen mit Underscore.js der groupBy mit meiner Funktion hat den Trick mit! Ich bin mir nicht sicher, wie ich diese Frage offiziell "lösen" soll, so dass Sie für Ihre Hilfe Anerkennung bekommen, aber es sieht so aus, als wäre ich fertig.

var playerBatch = new Array(); 
 

 
playerBatch["00"] = [{ 
 
    userName: "apple", 
 
    bestScore: "10" 
 
}, { 
 
    userName: "banana", 
 
    bestScore: "20" 
 
}, { 
 
    userName: "starfruit", 
 
    bestScore: "20" 
 
}, { 
 
    userName: "tomato", 
 
    bestScore: "30" 
 
}]; 
 

 

 
var batch = "00", 
 
    groupArray = []; 
 

 
for (i = 0; i < playerBatch[batch].length; i++) { 
 
    if (playerBatch[batch][i].bestScore == "20") { 
 
    groupArray.push(playerBatch[batch][i].userName) 
 
    } 
 
}; 
 

 
if(groupArray.length){ 
 
    document.write("User Group: "); 
 
    document.write(groupArray.join(", ")); 
 
}

Verwandte Themen