2016-12-14 2 views
1

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);

これまでユーザーはgiftedObjectobjectが作成されます100ポイントに達したときに私のコードの.hereです。ユーザーがその時2つのオブジェクトは、オブジェクトを作成した後

を作成する200点に達した場合、ユーザは、我々はデータから才能の値を減らす必要があるその時1つの目的は、

を作成する100点に達した場合

期待される結果:

才能のオブジェクト結果:

{ 
     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', 
    } 

最終的なデータは、あなたが合計からgifted_pointsを引くことができ

{ 
      _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

あなたがしようとしていることはまったく明確ではありません。 'すべて正常に動作しますが、オブジェクトを作成した後、合計値を減らす(マイナス)必要があります。 ' – Jamiec

+0

@Jamiecの行に沿って、オブジェクトの新しいリストを作成し、新しいリストのために作成されたオブジェクトの数で各エントリの? –

答えて

2

を引き起こします。 forループ内の合計をデクリメントについてどのように

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

最終的なデータとgiftedObjectの2つの異なるオブジェクトを取得する必要があります –

0

for(var i = 0; i < userSummary.numberOfGifted; i++){ 
    giftedObject.push({ 
     user_id: userSummary.user_id, 
     name: userSummary.name, 
     gifted_point: 1, 
     active: true 
    }); 
    userSummary.sum -= 1; // <--- add this line 
} 
関連する問題