如何使用javascript计算摘要?

时间:2016-12-14 17:37:47

标签: 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);
&#13;
&#13;
&#13;

以上是我的代码。当用户达到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
        }

2 个答案:

答案 0 :(得分:2)

您可以从总和中减去gifted_points

&#13;
&#13;
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);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;

答案 1 :(得分: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
}