2016-12-14 5 views
1

Wie berechnet man die Zusammenfassung mit Javascript?

var data = [ 
 
    { 
 
     _id:   '6d2847090a6a1b', 
 
     user_id:  '580da5653bd3cc5802f6c37c', 
 
     name:   'aaaa', 
 
     sum: 250 
 
     
 
    }, 
 
    
 
    { 
 
     _id:   '75f36d2847090a6a36580871', 
 
     user_id:  '3bd3cc5802f6c37c580da565', 
 
     name:   'bbbb', 
 
     sum :30 
 
    }, 
 
    { 
 
     _id:   '6a3087184367090a6a3e58fd284', 
 
     user_id:  '2f63bc580c37c580da565d3c', 
 
     name:   'ccc', 
 
     sum :100 
 
    } 
 
]; 
 

 

 
var giftedObject = []; 
 
data.forEach(function(userSummary){ 
 
    userSummary.numberOfGifted = Math.floor(userSummary.sum/100); 
 
    for(var i = 0; i < userSummary.numberOfGifted; i++){ 
 
     giftedObject.push({ 
 
      user_id: userSummary.user_id, 
 
      name: userSummary.name, 
 
      gifted_point: 1, 
 
      active: true 
 
     }); 
 
    } 
 
    
 
}); 
 
var result = {giftedObject: giftedObject}; 
 
console.log(result);

Oben ist mein Code .hier wenn jemals Benutzer 100 Punkte erreicht giftedObjectobject schaffen wird.

wenn Benutzer 100 Punkt erreicht, dass die Zeit ein Objekt

schaffen wird, wenn Benutzer 200 Punktobjekt, dass die Zeit zwei erreicht

schaffen

nach Objekt schaffen wir die begabten Werte von den Daten

reduzieren müssen erwartetes Ergebnis:

begabtes Objekt Ergebnis:

{ 
     active:true 
     user_id:  '580da5653bd3cc5802f6c37c', 
     gifted_point: 1 
     name:   'aaaa', 


    }, 

    { 
     active:true 
     user_id:  '580da5653bd3cc5802f6c37c', 
     gifted_point: 1 
     name:   'aaaa', 
    }, 
    { 

     active:true 
     user_id:  '2f63bc580c37c580da565d3c', 
     gifted_point: 1 
     name: 'ccc', 
    } 

endgültigen Daten führen

{ 
      _id:   '6d2847090a6a1b', 
      user_id:  '580da5653bd3cc5802f6c37c', 
      name:   'aaaa', 
      sum: 248 

     }, 

     { 
      _id:   '75f36d2847090a6a36580871', 
      user_id:  '3bd3cc5802f6c37c580da565', 
      name:   'bbbb', 
      sum :30 
     }, 
     { 
      _id:   '6a3087184367090a6a3e58fd284', 
      user_id:  '2f63bc580c37c580da565d3c', 
      name:   'ccc', 
      sum :99 
     } 
+1

Es ist überhaupt nicht klar, was Sie zu tun versuchen. 'alles funktioniert gut, aber nach dem Erstellen des Objekts müssen wir reduzieren (minus) im Summenwert ' – Jamiec

+0

Entlang den Zeilen von @Jamiec möchten Sie eine neue Liste von Objekten erstellen, während Sie die ursprüngliche Liste von Objekten an Ort und Stelle ändern, um die Summe zu reduzieren von jedem Eintrag um die Anzahl der Objekte, die für die neue Liste erstellt wurden? –

Antwort

2

Sie gifted_points aus der Summe abziehen könnte.

var data = [{ _id: '6d2847090a6a1b', user_id: '580da5653bd3cc5802f6c37c', name: 'aaaa', sum: 250 }, { _id: '75f36d2847090a6a36580871', user_id: '3bd3cc5802f6c37c580da565', name: 'bbbb', sum: 30 }, { _id: '6a3087184367090a6a3e58fd284', user_id: '2f63bc580c37c580da565d3c', name: 'ccc', sum: 100 }], 
 
    giftedObject = []; 
 

 
data.forEach(function (userSummary) { 
 
    var i, 
 
     gifted_point = Math.floor(userSummary.sum/100); 
 

 
    userSummary.sum -= gifted_point; 
 
    for (i = 0; i < gifted_point; i++) { 
 
     giftedObject.push({ 
 
      user_id: userSummary.user_id, 
 
      name: userSummary.name, 
 
      gifted_point: 1, 
 
      active: true 
 
     }); 
 
    } 
 
}); 
 

 
result = { giftedObject: giftedObject }; 
 
console.log(data); 
 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

Ich brauche zwei verschiedene Objekte eins für finale Daten und eins für begiftedObject –

0

Wie wäre es, die Summe in der for-Schleife Erniedrigen?

Verwandte Themen