How to sum property values of an object?

后端 未结 5 1087
时光说笑
时光说笑 2021-01-20 00:46

I want to sum the property values of PieData. My expected output is 25515512+916952499 = 942468011



        
相关标签:
5条回答
  • 2021-01-20 01:23

    PieData is an array with 2 elements, each element being a HashTable. you can sum them up by saying:

    var sum = PieData[0]["value] + PieData[1]["value"]
    

    If you have more elements or simply want to use a loop:

    var sum=0;
    for(var i=0;i<PieData.length;i++){
       sum+=PieData[i]["value"];
    }
    
    0 讨论(0)
  • 2021-01-20 01:32

    You could use the native method Array#reduce for it.

    var PieData = [{ value: 25515512, color: "#00a65a", highlight: "#00a65a", label: "Received Fund" }, { value: 916952499, color: "#f56954", highlight: "#f56954", label: "Pending Fund" }],
        sum = PieData.reduce(function (s, a) {
            return s + a.value;
        }, 0);
    
    console.log(sum);

    ES6

    var PieData = [{ value: 25515512, color: "#00a65a", highlight: "#00a65a", label: "Received Fund" }, { value: 916952499, color: "#f56954", highlight: "#f56954", label: "Pending Fund" }],
        sum = PieData.reduce((s, a) => s + a.value, 0);
    
    console.log(sum);

    0 讨论(0)
  • 2021-01-20 01:32

    Things to change:

    • initialise total as 0 because + operator on string concatenates the values.
    • $.each loops over the object passed, So you can directly access that in callback to calculate sum.

    Sample Snippet:

     var PieData = [{
       value: 25515512,
       color: "#00a65a",
       highlight: "#00a65a",
       label: "Received Fund"
    
     }, {
       value: 916952499,
       color: "#f56954",
       highlight: "#f56954",
       label: "Pending Fund"
     }];
    
     //calculating total
     var total = 0;
     $.each(PieData, function(index, value) {
       total += value.value;
     })
     alert(total)
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

    0 讨论(0)
  • 2021-01-20 01:32

    var PieData = [{
            value: 25515512,
            color: "#00a65a",
            highlight: "#00a65a",
            label: "Received Fund"
        }, {
            value: 916952499,
            color: "#f56954",
            highlight: "#f56954",
            label: "Pending Fund"
        }],
        userSelectedColors = ['value'];
    
    var totalCount = _.sumBy(userSelectedColors, _.partial(_.sumBy, PieData));
    
    console.log(totalCount);
    <script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>

    0 讨论(0)
  • 2021-01-20 01:37

    You can use javascript forEach() method like following.

     var PieData = [
               {
                   value: 25515512,
                   color: "#00a65a",
                   highlight: "#00a65a",
                   label: "Received Fund"
    
               },
               {
                   value: 916952499,
                   color: "#f56954",
                   highlight: "#f56954",
                   label: "Pending Fund"
               }
        ];
    
    var sum = 0;
    PieData.forEach(function(item){
        sum += item.value;
    })
    
    console.log(sum)

    0 讨论(0)
提交回复
热议问题