2016-12-14 73 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);

以上是当过用户达到100分giftedObjectobject将创造我的代码。在这里。

如果用户达到100点时一个对象将创建

如果用户达到了200点创建对象后两个时间对象将创建

我们需要从数据降低了优值

预期的结果:

优对象的结果:

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

最终数据结果

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

你可以从你的总和减去gifted_points

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 –

0

如何递减的for循环里面的总和?

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 
}