2016-04-28 7 views
-3

ich möchte einen Index in meinem Array hinzuzufügen:Index in Array

hier ist meine Schleife

for(j=0; j< data.data.tickets.length; j++) { 
    var created_at = data.data.tickets[j].created_at; 
    var tickettitle = data.data.tickets[j].subject; 
    cleartab[requesterid]['tickets'] = [{"created":created_at, "titre":tickettitle}]; 
} 

Und es hat mir dieses Array: enter image description here

Das Problem ist, dass Mein Schlüssel in tickets[] wird immer neu geschrieben, so dass es nicht iteriert wird. Weil meine Benutzer viele Tickets haben, ist jeder Index ein Ticket und jedes Ticket hat ein Datum und einen Titel.

+0

, wenn Sie Array von Objekten haben sie immer einen Index haben. In .forEach() haben Rückruf, die mit drei Argumenten aufgerufen wurden "(Element, Index, Array) – daremachine

+1

Was ist ein" JSON-Array "? – RobG

Antwort

3

Das Problem besteht darin, dass Sie das Array tickets bei jeder Iteration Ihrer for-Schleife überschreiben. Versuchen Sie, diese

  for(j=0; j< data.data.tickets.length ;j++){ 
      var created_at = data.data.tickets[j].created_at; 
      var tickettitle = data.data.tickets[j].subject; 
      // Making sure that 'tickets' will be an array 
      var arrayRef = cleartab[requesterid]['tickets'] || []; 
      cleartab[requesterid]['tickets'] = arrayRef.concat([{"created":created_at,"titre":tickettitle}]); 
     } 
+0

Es heißt concat ist nicht definiert, tut mir leid, ich bin neu in Javascript und ich tun Sie nicht, wenn es darauf ankommt, aber dieser Code ist in einem eckigen Projekt – xenurs

+0

Dies ist, weil auf der ersten Iteration der Schleife das Array noch nicht existiert.Der leichter zu lesende Weg, um dies zu beheben (aber wohl nicht die meisten elegant one ..) ist Ihr Array zu initialisieren, bevor Sie die for-Schleife ausführen. Ich habe den Code aktualisieren. – silkAdmin

+0

Dies ist nicht möglich, mein Array vor der Schleife zu deklarieren, weil: 'var requesterid = data.data.tickets [j] .requester_id; 'muss die Schleife existieren gibt es einen anderen Weg? – xenurs

0

Dies wird für Sie arbeiten ..

<script> 
var cleartab ={tickets :[]}; 
$.each(data.data.tickets, function(key,val) { 
    var created_at = val.created_at; 
    var tickettitle = val.subject; 
    cleartab.tickets.push({"created":created_at, "title":tickettitle}); 
}); 
console.log(cleartab) 
</script>